picture picture
août 14, 2018 MySQL 2 Commentaires

Comment changer la clé primaire d’une table MySQL

Il peut arriver que, pour les besoins du développement d’une site ou d’une application web, il soit nécessaire de modifier une clé primaire sur une table existante et en production. On peut souhaiter changer son nom, par exemple, ou ré-incrémenter les valeurs des tupples existants, etc.

C’est plus délicat qu’il n’y parait, puisque cette clé est logiquement auto-incrémentée : phpMyAdmin, par exemple, ne propose pas de solutions intuitives pour cela.

Il suffit de procéder dans le bon ordre pour que tout se passe bien !

Dans l’exemple qui suit nous allons supposer que nous souhaitions remplacer la colonne de la clé primaire nommée « id » de la table inscription, par une colonne nommée « id_insc ».

1. Supprimer la clé primaire existante

Si vous ne souhaitez pas supprimer purement et simplement la colonne, il vous faudra commencer par supprimer l’auto-incrémentation si elle existe, PUIS supprimer la clé primaire sur cette colonne.

Code MySQL :

// retirer D'ABORD l'auto-incrémentation (si elle existe)
ALTER TABLE `inscription` MODIFY `id` INT(11) UNSIGNED NOT NULL;
// puis effacer la clé primaire sur la colonne
ALTER TABLE `inscription` DROP PRIMARY KEY;
									

Vous pouvez l’exécuter depuis un fichier externe PHP, par exemple, ou directement depuis l’onglet SQL de phpMyAdmin si vous l’utilisez :

2. Créer une nouvelle colonne, en tête de la table

Cette action peut également être faite depuis l’interface de phpMyAdmin. Les seules points importants à ne pas oublier sont les suivants :

  • cette colonne doit être au début de la table (avant toutes les autres colonnes existantes)
  • elle doit impérativement comporter les 2 attributs suivants : AI coché (Auto-Increment) + Unsigned

3. Transformer la nouvelle colonne en clé primaire

Selon les versions de phpMyAdmin, l’action précédente suffit parfois à en faire automatiquement une clé primaire. Il est néanmoins parfois nécessaire d’attribuer à cette nouvelle colonne (‘id_insc’ dans mon exemple) l’attribut « clé primaire » en cliquant sur la petite clé argentée au bout de sa ligne de structure. Cette clé deviendra dorée, symbole de la clé primaire de la table :

Il est également possible de passer par le code MySQL suivant :

ALTER TABLE inscription` ADD PRIMARY KEY (`id_insc`);
									

Pour aller plus vite, vous pouvez tenter d’exécuter ensemble les points 2 et 3 avec le code MySQL suivant. Cela ne marche pas toujours, et dépend des versions de phpMyAdmin et MySQL que vous avez sur votre serveur…

ALTER TABLE `inscription` ADD `id_insc` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id_insc`);
									

Et voilà :D

2 Responses to “Comment changer la clé primaire d’une table MySQL”

One Comment

  1. Attia dit :

    L’explication très claire, bonne continuation et merci Beaucoup.

One Trackback

  1. […] dans le cas précédant (Comment changer la clé primaire d’une table MySQL), dupliquer une colonne d’une table MySQL en gardant ses valeurs est simple… à […]

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: