11.4. 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 name ON table (column [, ...]);

À 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 Nulles ne sont pas considérées comme égales. Un index unique multicolonnes ne rejettera 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.