Chciałbym ustawić tabelę w postgresql tak, że dwie kolumny razem muszą być unikalne. Może istnieć wiele wartości dowolnej wartości, o ile nie ma dwóch, które dzielą obie.W Postgresql, Force unique na połączeniu dwóch kolumn
Na przykład:
CREATE TABLE someTable (
id int PRIMARY KEY AUTOINCREMENT,
col1 int NOT NULL,
col2 int NOT NULL
)
Więc col1
i col2
można powtórzyć, ale nie w tym samym czasie. Tak, to będzie mogła (nie licząc id)
1 1
1 2
2 1
2 2
ale nie w ten sposób:
1 1
1 2
1 1 -- would reject this insert for violating constraints
Podobają mi się sugestie klucza podstawowego nad unikatowym tutaj, ponieważ nie dopuszczamy w tym przypadku wartości NULL. Z dokumentów PostgeSQL: "Należy zauważyć, że unikalne ograniczenie samo w sobie nie dostarcza unikalnego identyfikatora, ponieważ nie wyklucza wartości pustych.)" Https://www.postgresql.org/docs/8.1/static/ddl-constraints .html # AEN2038 – Voles