11.6. Index d'unicité
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, il ne peut exister
plusieurs lignes d'une table qui possèdent la même valeur
indexée. Les valeurs NULL ne sont pas considérées égales. Un
index d'unicité multi-colonnes ne rejette que les cas où toutes
les colonnes indexées sont égales dans deux lignes.
PostgreSQL™ crée
automatiquement un index d'unicité à la déclaration d'une
contrainte d'unicité ou d'une clé primaire sur une table.
L'index porte sur les colonnes qui composent la clé primaire ou
la contrainte d'unicité (au besoin, il s'agit d'un index
multi-colonnes). C'est cet index qui assure le mécanisme de
vérification de 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 d'unicité peut être considérée comme un détail
d'implantation qui ne doit pas être utilisé directement. Il
n'est pas nécessaire de créer manuellement un index sur les
colonnes uniques. Cela duplique l'index créé
automatiquement.