11.6. Índices de unicidade #

Os índices também podem ser usados para impor a unicidade do valor de uma coluna, ou a unicidade dos valores combinados de mais de uma coluna.

CREATE UNIQUE INDEX nome ON tabela (coluna [, ...]) [ NULLS [ NOT ] DISTINCT ];

No momento, apenas os índices B-Tree podem ser declarados como sendo UNIQUE.

Quando um índice é declarado como de unicidade, não são permitidas múltiplas linhas na tabela com valores indexados iguais. Por padrão, valores nulos em uma coluna única não são considerados iguais, permitindo múltiplos valores nulos na coluna. A opção NULLS NOT DISTINCT modifica isto fazendo com que o índice trate os valores nulos como iguais. Um índice de unicidade de múltiplas colunas rejeitará apenas os casos em que todas as colunas indexadas forem iguais em várias linhas.

O PostgreSQL cria automaticamente um índice de unicidade quando uma restrição UNIQUE, ou chave primária, é definida para a tabela. O índice abrange as colunas que compõem a chave primária, ou a restrição de unicidade (um índice multicoluna, se for apropriado), sendo o mecanismo que impõe a restrição.

Nota

Não há necessidade de criar índices manualmente em colunas com unicidade; fazer isto apenas duplica o índice criado automaticamente.