Je voudrais mettre en place un tableau dans postgresql tel que deux colonnes ensemble doivent être uniques. Il peut y avoir plusieurs valeurs de l'une ou l'autre valeur, tant qu'il n'y en a pas deux qui partagent les deux.
Par exemple:
CREATE TABLE someTable (
id int PRIMARY KEY AUTOINCREMENT,
col1 int NOT NULL,
col2 int NOT NULL
)
Alors, col1
et col2
peut répéter, mais pas en même temps. Donc, cela serait permis (sans inclure l'identifiant)
1 1
1 2
2 1
2 2
mais pas ceci:
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
n'est pas postgresql. Vous voulez un serial
.
Si col1 et col2 font un unique et ne peuvent pas être null, alors ils font une bonne clé primaire:
CREATE TABLE someTable (
col1 int NOT NULL,
col2 int NOT NULL,
primary key (col1, col2)
)
Créez une contrainte unique selon laquelle deux nombres ne peuvent PAS être répétés ensemble:
ALTER TABLE someTable
ADD UNIQUE (col1, col2)
On dirait un régulier UNIQUE CONTRAINT :)
CREATE TABLE example (
a integer,
b integer,
c integer,
UNIQUE (a, c));
Plus ici