Eu tenho a seguinte tabela:
tickername | tickerbbname | tickertype
------------+---------------+------------
USDZAR | USDZAR Curncy | C
EURCZK | EURCZK Curncy | C
EURPLN | EURPLN Curncy | C
USDBRL | USDBRL Curncy | C
USDTRY | USDTRY Curncy | C
EURHUF | EURHUF Curncy | C
USDRUB | USDRUB Curncy | C
Não quero que exista mais de uma coluna para qualquer par tickername
/ dado tickerbbname
. Já criei a tabela e tenho muitos dados (os quais já garanti que atendem aos critérios exclusivos). À medida que aumenta, porém, há espaço para erros.
Existe alguma maneira de adicionar uma UNIQUE
restrição neste momento?
sql
database
postgresql
indexing
unique-constraint
Thomas Browne
fonte
fonte
Respostas:
psql
da ajuda em linha:Também documentado nos documentos do postgres (um excelente recurso, além de fácil leitura também).
fonte
ALTER TABLE tablename ADD UNIQUE (columns);
. (Note que aCONSTRAINT
palavra-chave deve ser omitido.)Sim você pode. Mas se você tiver entradas não exclusivas na sua tabela, ela falhará. Aqui está como adicionar restrições exclusivas à sua tabela. Se você estiver usando o PostgreSQL 9.x, siga as instruções abaixo.
fonte
Se você tinha uma tabela que já tinha restrições existentes com base em digamos: nome e sobrenome e desejava adicionar mais uma restrição exclusiva, era necessário eliminar toda a restrição:
Verifique se a nova restrição que você deseja adicionar é exclusiva / não nula (se for Microsoft Sql, pode conter apenas um valor nulo) em todos os dados dessa tabela e, em seguida, você pode recriá-la.
fonte
Sim, você pode adicionar uma restrição UNIQUE após o fato. No entanto, se você tiver entradas não exclusivas em sua tabela, o Postgres reclamará até que você as corrija.
fonte
select <column> from <table> group by 1 having count(*) > 1;
fornecerá um relatório sobre valores duplicados.