11.5. Index uniques
Les index peuvent aussi être utilisés pour garantir l'unicité
des valeurs d'une colonne, ou l'unicité des valeurs combinées
de plusieurs colonnes.
CREATE UNIQUE INDEX nom ON table (colonne [, ...]);
À ce jour, seuls les index B-trees peuvent être déclarés
uniques.
Lorsqu'un index est déclaré unique, des lignes différentes
d'une table ne pourront avoir une valeur égale. Les valeurs
NULL ne sont pas considérées comme égales. Un index unique
multicolonnes ne rejette que les cas où toutes les colonnes
indexées sont égales dans deux lignes.
PostgreSQL™ crée
automatiquement un index unique quand une contrainte unique ou
une clé primaire sont définies sur une table. L'index porte sur
les colonnes qui composent la clé primaire ou la contrainte
d'unicité (il s'agit d'un index multicolonnes, si c'est
approprié). Cet index EST le mécanisme qui vérifie la
contrainte.
Note
La méthode la plus appropriée pour ajouter une contrainte à
une table est ALTER TABLE ... ADD
CONSTRAINT. L'utilisation des index pour vérifier les
contraintes uniques doit être considérée comme un détail
d'implémentation qui ne doit pas être utilisé directement.
Il faut par contre savoir qu'il n'est pas nécessaire de
créer manuellement un index sur les colonnes uniques. Cela
dupliquerait l'index créé automatiquement.