web-dev-qa-db-fra.com

MySQL - Rendre unique un champ existant

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?

139
Lothar
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.

référence

267
WuHoUnited

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);
14
ypercubeᵀᴹ

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

6
Zulan

Le moyen le plus simple et le plus rapide serait d'utiliser la table de structure phpmyadmin.

USE PHPMYADMIN ADMIN PANEL!

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.

3
MKA
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

est la bonne réponse

la partie insert

INSERT IGNORE INTO mytable ....
2
user3772326

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);
1
KARTHIKEYAN.A