2つの列が一緒に一意でなければならないように、postgresqlでテーブルを設定したいと思います。両方を共有する2つの値がない限り、いずれかの値の値が複数存在する場合があります。
例えば:
CREATE TABLE someTable (
id int PRIMARY KEY AUTOINCREMENT,
col1 int NOT NULL,
col2 int NOT NULL
)
したがって、col1
とcol2
は繰り返すことができますが、同時にはできません。したがって、これは許可されます(IDは含まれません)
1 1
1 2
2 1
2 2
しかし、これではありません:
1 1
1 2
1 1 -- would reject this insert for violating constraints
CREATE TABLE someTable (
id serial primary key,
col1 int NOT NULL,
col2 int NOT NULL,
unique (col1, col2)
)
autoincrement
はpostgresqlではありません。 serial
が必要です。
Col1とcol2が一意になり、nullにできない場合、それらは適切な主キーを作成します。
CREATE TABLE someTable (
col1 int NOT NULL,
col2 int NOT NULL,
primary key (col1, col2)
)
2つの数値を一緒に繰り返すことはできないという一意の制約を作成します。
ALTER TABLE someTable
ADD UNIQUE (col1, col2)
通常のUNIQUE CONSTRAINTのようです:)
CREATE TABLE example (
a integer,
b integer,
c integer,
UNIQUE (a, c));
もっと こちら