J'ai une table déjà existante avec un champ qui devrait être unique mais ne l'est pas. Je le sais seulement parce qu’une entrée a été créée dans la table et qu’elle avait la même valeur qu’une autre entrée existante, ce qui a posé des problèmes.
Comment faire que ce champ n'accepte que des valeurs uniques?
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);
Pour MySQL 5.7.4 ou version ultérieure:
ALTER TABLE mytbl ADD UNIQUE (columnName);
Depuis MySQL 5.7.4, la clause IGNORE pour ALTER TABLE est supprimée et son utilisation génère une erreur.
Veillez donc à supprimer d’abord les entrées en double car le mot clé IGNORE n’est plus pris en charge.
Il suffit d'écrire cette requête dans votre base de données phpmyadmin.
ALTER TABLE TableName ADD UNIQUE (FieldName)
Par exemple: ALTER TABLE user ADD UNIQUE (email)
Si vous souhaitez également nommer la contrainte, utilisez ceci:
ALTER TABLE myTable
ADD CONSTRAINT constraintName
UNIQUE (columnName);
CREATE UNIQUE INDEX foo ON table_name (field_name)
Vous devez supprimer les valeurs en double sur cette colonne avant de l'exécuter. Toute valeur en double existante sur cette colonne vous mènera à erreur mysql 1062
Le moyen le plus simple et le plus rapide serait d'utiliser la table de structure phpmyadmin.
Là, c'est en langue russe mais la version anglaise devrait être la même. Cliquez simplement sur le bouton Unique. Aussi à partir de là, vous pouvez faire vos colonnes PRIMARY ou DELETE.
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);
est la bonne réponse
la partie insert
INSERT IGNORE INTO mytable ....
Ce code est pour résoudre notre problème pour définir la clé unique pour la table existante
alter ignore table ioni_groups add unique (group_name);