web-dev-qa-db-fra.com

MySQL: rendre une colonne unique?

J'ai une table qui est en production. Je me rends compte que certaines des colonnes devraient être uniques. Est-il sûr d'aller dans phpMyAdmin et de modifier ces colonnes pour le rendre unique?

ALTER TABLE  `foo` ADD UNIQUE ( `bar` )
16
  1. Vous n'avez pas de doublons -> appliquera la clé sans problèmes
  2. Vous avez des doublons -> donnera un message d'erreur, rien n'est arrivé à vos données
  3. Tout est unique, sauf plusieurs lignes contenant NULL, la contrainte unique est toujours appliquée, car NULL n'est pas vérifié lors de la vérification des valeurs uniques (vous pouvez avoir la table entière avoir une valeur NULL dans un champ unique sans aucun message d'erreur).

Une dernière chose, si vous avez une DB de production, vous devez également avoir une DB de développement sur laquelle vous pouvez tester sans crainte, non?

11

Suivez les étapes ci-dessous pour appliquer une valeur de colonne unique à partir du panneau phpmyadmin:

Accédez à la structure du tableau. Cliquez sur le mot-clé unique comme ci-dessous -

enter image description here

Cliquez sur le ok de la boîte de confirmation -

enter image description here

Une contrainte de valeur unique pour la colonne s'appliquera. Ou vous pouvez exécuter une requête mysql:

ALTER TABLE user ADD UNIQUE(email);

8
Rahul Mankar

J'ai eu ce problème et mes valeurs n'étaient pas uniques. Je n'ai pas non plus trouvé de moyen simple de modifier ce problème dans PHPMyAdmin. Voici comment je l'ai résolu:

  1. J'ai cliqué dans le tableau dont j'avais besoin pour mettre à jour

  2. J'ai exporté la table, en la changeant pour une exportation CSV, puis je l'ai modifiée manuellement pour mettre à jour les valeurs non uniques.

  3. En m'assurant que j'étais toujours dans le tableau que j'avais exporté (parce que je voulais garder les en-têtes intacts), j'ai importé mon CSV nouvellement enregistré

J'espère que cela fera gagner du temps à quelqu'un dans le futur.

1
Eoin

Ce ne sera un problème que si les valeurs préexistantes sur la table ne sont pas uniques, sinon je ne pense pas qu'il y aura de problème.

1
Oscar Gomez

S'il y a déjà des valeurs en double dans ces colonnes, cela générera une erreur. S'il n'y a pas de valeurs en double dans ces colonnes, tout ira bien.

1
MD Sayem Ahmed