PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 17.2 » Langage SQL » Index » Index d'unicité

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 [, ...]) [ NULLS [ NOT ]optional> DISTINCT ];

À ce jour, seuls les index B-tree 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. Par défaut, les valeurs NULL dans une colonne d'unicité ne sont pas considérées comme égales, permettant ainsi plusieurs valeurs NULL dans la colonne. L'option NULLS NOT DISTINCT modifie ceci et fait que l'index traite les valeurs NULL comme identiques. Un index d'unicité multicolonne ne rejette que les cas où toutes les colonnes indexées sont égales sur plusieurs 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 multicolonne). C'est cet index qui assure le mécanisme de vérification de la contrainte.

Note

Il n'est pas nécessaire de créer manuellement un index sur les colonnes uniques. Cela duplique l'index créé automatiquement.