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 INDEXnomeONtabela(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.
Não há necessidade de criar índices manualmente em colunas com unicidade; fazer isto apenas duplica o índice criado automaticamente.