Os índices também podem ser utilizados 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 [, ...]);
Atualmente, somente os índices B-tree poder ser declarados como únicos.
Quando o índice é declarado como único, não pode existir na tabela mais de uma linha com valores indexados iguais. Os valores nulos não são considerados iguais. Um índice único com várias colunas rejeita apenas os casos onde todas as colunas indexadas são iguais em duas linhas.
O PostgreSQL cria, automaticamente, um índice único quando é definida na tabela uma restrição de unicidade ou uma chave primária. O índice abrange as colunas que compõem a chave primária ou as colunas únicas (um índice com várias colunas, se for apropriado), sendo este o mecanismo que impõe a restrição.
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 impor restrições de unicidade pode ser considerada um detalhe de implementação que não deve ser acessado diretamente. Entretanto, deve-se ter em mente que não é necessário criar índices em colunas únicas manualmente; caso se faça, simplesmente se duplicará o índice criado automaticamente.