Eu tenho uma tabela já existente com um campo que deve ser exclusivo, mas não é. Só sei disso porque uma entrada foi feita na tabela que tinha o mesmo valor que outra entrada já existente e isso causou problemas.
Como faço para que este campo aceite apenas valores exclusivos?
mysql
unique-constraint
Lothar
fonte
fonte
If IGNORE is specified, only the first row is used of rows with duplicates on a unique key, The other conflicting rows are deleted.
DocsALTER
de fazer isso.ALTER IGNORE
ainda pode ocorrer erro duplicado na versão MySQL> 5.5 e no InnoDB para a segurança dos seus dados. Se você tem certeza de que manter a primeira das linhas duplicadas é a coisa certa, tenteset session old_alter_table=1
. Não se esqueça de devolvê-lo. mysqlolyk.wordpress.com/2012/02/18/…Basta escrever esta consulta no seu db phpmyadmin.
Por exemplo:
ALTER TABLE user ADD UNIQUE (email)
fonte
Se você também quiser nomear a restrição, use este:
fonte
CREATE UNIQUE INDEX foo ON table_name (field_name)
Você precisa remover valores duplicados nessa coluna antes de executar esse sql. Qualquer valor duplicado existente nessa coluna levará você ao erro mysql 1062
fonte
A maneira mais fácil e rápida seria com a tabela de estrutura phpmyadmin.
Lá está no idioma russo, mas na versão em inglês deve ser o mesmo. Basta clicar no botão Exclusivo. Também a partir daí, você pode tornar suas colunas PRIMARY ou DELETE.
fonte
é a resposta certa
a peça de inserção
fonte
Este código é para resolver nosso problema para definir uma chave exclusiva para a tabela existente
fonte