PostgreSQL で、2 つの列が一緒に一意になるようにテーブルを設定したいと思います。両方の値を共有する 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
ベストアンサー1
CREATE TABLE someTable (
id serial PRIMARY KEY,
col1 int NOT NULL,
col2 int NOT NULL,
UNIQUE (col1, col2)
)
autoincrement
postgresql ではありません。PG 9 以下を使用している場合は、integer primary key generated always as identity
(または)が必要です。serial
serial
PG 10では非推奨となった)。
col1
および が一意であり、null にできない場合はcol2
、適切な主キーになります。
CREATE TABLE someTable (
col1 int NOT NULL,
col2 int NOT NULL,
PRIMARY KEY (col1, col2)
)