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 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 multi-colonnes). C'est cet index qui assure le mécanisme de vérification de la contrainte.
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.