Est-il possible d'avoir une contrainte de colonne unique personnalisée comme suit? Supposons que j'ai deux cols, subset
et type
, les deux chaînes (bien que les types de données ne comptent probablement pas).
Si type
est "vrai", je veux alors que la combinaison de type
et subset
soit unique. Sinon, il n'y a pas de contrainte. J'utilise PostgreSQL 8.4 sur Debian.
En d'autres termes, vous voulez subset
d'être unique si type = 'true'
.
[.____] A Index unique partiel fera cela:
CREATE UNIQUE INDEX tbl_some_name_idx ON tbl (subset) WHERE type = 'true';
De cette façon, vous pouvez même faire des combinaisons avec NULL
unique, qui n'est pas possible, sinon détaillé dans cette réponse connexe:
[.____] Valeurs uniques de PostgreSQL multi-colonnes et valeurs NULL