8.4. Índices únicos

Os índices também podem ser utilizados para garantir 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 [, ...]);

Atualmente, somente os índices B-tree poder ser declarados como únicos.

Quando um índice é declarado como único, não é permitida a existência de mais de uma linha da tabela com o mesmo valor do índice. Os valores nulos não são considerados como sendo iguais.

O PostgreSQL cria, automaticamente, índices únicos quando a tabela é declarada com restrição de unicidade ou com chave primária, nas colunas que compõem a chave primária ou nas colunas com unicidade (um índice com várias colunas, quando apropriado), para garantir esta restrição. Um índice único pode ser adicionado à tabela posteriormente para adicionar uma restrição de unicidade.

Nota: A forma preferida para adicionar restrição de unicidade a uma tabela é por meio do comando ALTER TABLE ... ADD CONSTRAINT. A utilização de índices para garantir a restrição de unicidade pode ser considerada um detalhe de implementação que não deve ser acessado diretamente.