Pergunta

Eu tenho a tabela a seguir:

 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

Eu não quero que haja mais de uma coluna para qualquer um dado tickername/tickerbbname par. Já criei a tabela e tenho muitos dados (que eu já assegurei que atenda aos critérios exclusivos). À medida que fica maior, o espaço para erros se aproxima.

Existe alguma maneira de adicionar um UNIQUE restrição neste momento?

Foi útil?

Solução

psqlAjuda embutida:

\h ALTER TABLE

Também documentado no Postgres Docs (Um excelente recurso, além de fáceis de ler também).

ALTER TABLE tablename ADD CONSTRAINT constraintname UNIQUE (columns);

Outras dicas

Sim você pode. Mas se você tiver entradas que não sejam exclusivas na sua mesa, ela falhará. Aqui está o como adicionar restrições exclusivas em sua mesa. Se você estiver usando o PostGresql 9.x, poderá seguir a instrução abaixo.

CREATE UNIQUE INDEX constraint_name ON table_name (columns);

Sim, você pode adicionar uma restrição única após o fato. No entanto, se você tiver entradas não únicas na sua tabela Postgres, reclamarão até você corrigi-las.

Se você tivesse uma tabela que já tinha restrições existentes com base em vamos dizer: nome e último nome e você queria adicionar mais uma restrição exclusiva, você teve que soltar toda a restrição:

ALTER TABLE your_table DROP CONSTRAINT constraint_name;

Verifique se a nova restrição que você deseja adicionar é única/ não nula (se o Microsoft SQL, ele pode conter apenas um valor nulo) em todos os dados nessa tabela e, em seguida, você pode recriá-lo.

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top