列の値が事前に指定されたテーブルを作成する方法。
のようなものenum
ですが、enum
8.3 からPostgres
動作し、8.1 以降のバージョンで動作するものが必要なためです。
例えば
CREATE TABLE (
cars ('bmw', 'audi');
)
また、cars 列に値を挿入するときに、bmw と audi 以外は挿入できないはずです。
列の値が事前に指定されたテーブルを作成する方法。
のようなものenum
ですが、enum
8.3 からPostgres
動作し、8.1 以降のバージョンで動作するものが必要なためです。
例えば
CREATE TABLE (
cars ('bmw', 'audi');
)
また、cars 列に値を挿入するときに、bmw と audi 以外は挿入できないはずです。
この問題を解決するには 2 つの方法があります。
1つ目は、チェック制約を使用することであり、Sashikanth's answer はそれを説明しています。許容値が変わらない場合は、このアプローチを使用する必要があります。それらが変更された場合は、制約を更新する必要があります。多くの組織では、本番環境に移行するまでに長いプロセスが必要になる可能性があります。
2 つ目は、許容値をリストする別のテーブルへの外部キーを使用することです。
create table cars (
car varchar(10) primary key
);
create table mydata (
id serial primary key,
car varchar(10) references cars
);
値が変更されることが予想される場合、またはユーザーが値を追加できるようにする必要がある場合は、このアプローチを使用する必要があります。