J'ai une table déjà existante avec un champ qui devrait être unique mais qui ne l'est pas. Je le sais seulement parce qu'une entrée a été faite dans la table qui avait la même valeur qu'une autre entrée déjà existante et cela a causé des problèmes.
Comment faire en sorte que ce champ n'accepte que des valeurs uniques?
mysql
unique-constraint
Lothar
la source
la source
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
faire.ALTER IGNORE
peut toujours donner une erreur en double sur MySQL version> 5.5 et sur InnoDB pour la sécurité de vos données. Si vous êtes simplement sûr que conserver la première des lignes dupliquées est la bonne chose, essayezset session old_alter_table=1
. N'oubliez pas de le remettre en place. mysqlolyk.wordpress.com/2012/02/18/…Écrivez simplement cette requête dans votre db phpmyadmin.
Par exemple:
ALTER TABLE user ADD UNIQUE (email)
la source
Si vous souhaitez également nommer la contrainte, utilisez ceci:
la source
CREATE UNIQUE INDEX foo ON table_name (field_name)
Vous devez supprimer les valeurs en double sur cette colonne avant d'exécuter ce sql. Toute valeur en double existante sur cette colonne vous mènera à l' erreur MySQL 1062
la source
Le moyen le plus simple et le plus rapide serait d'utiliser la table de structure phpmyadmin.
Là, c'est en russe, mais en anglais, la version devrait être la même. Cliquez simplement sur le bouton Unique. Aussi à partir de là, vous pouvez rendre vos colonnes PRIMAIRE ou SUPPRIMER.
la source
est la bonne réponse
la pièce d'insertion
la source
Ce code est de résoudre notre problème pour définir une clé unique pour la table existante
la source