11.6. Índices únicos #

Los índices también se pueden usar para garantizar la unicidad del valor de una columna, o la unicidad de los valores combinados de más de una columna.

CREATE UNIQUE INDEX nombre ON tabla (columna [, ...]) [ NULLS [ NOT ] DISTINCT ];

Actualmente, solo los índices B-tree se pueden declarar únicos.

Cuando un índice se declara único, no se permiten múltiples filas de la tabla con valores indexados iguales. Por defecto, los valores nulos en una columna única no se consideran iguales, lo que permite múltiples valores nulos en la columna. La opción NULLS NOT DISTINCT modifica esto y hace que el índice trate los nulos como iguales. Un índice único multicolumna solo rechazará los casos en los que todas las columnas indexadas sean iguales en varias filas.

PostgreSQL crea automáticamente un índice único cuando se define una restricción única o una clave primaria para una tabla. El índice cubre las columnas que componen la clave primaria o la restricción única (un índice multicolumna, si corresponde), y es el mecanismo que hace cumplir la restricción.

Note

No hay necesidad de crear manualmente índices en columnas únicas; hacerlo solo duplicaría el índice creado automáticamente.