Je change ma table mysql db d'un id (auto) à un uid.
ALTER TABLE companies DROP PRIMARY KEY;
ALTER TABLE companies ADD PRIMARY KEY (`uuid`);
C'est l'erreur que j'obtiens ..
[SQL] ALTER TABLE companies DROP PRIMARY KEY;
[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Ce que je comprends, je dois changer l'identifiant en non-incrémentation automatique car je le supprime comme clé primaire.? Quelle est la syntaxe pour changer une colonne pour supprimer la clé primaire et l'incrémentation automatique?
ALTER TABLE companies change id id ?????????? int(11)
Si vous devez supprimer l'incrémentation automatique et la clé primaire de la colonne id
dans une seule instruction SQL, cela devrait faire:
ALTER TABLE companies DROP PRIMARY KEY, CHANGE id id int(11);
En fait, vous devriez pouvoir tout faire en un seul ALTER TABLE
requete:
ALTER TABLE companies
DROP PRIMARY KEY,
CHANGE id id int(11),
ADD PRIMARY KEY (uuid);
Lorsque vous ne modifiez pas le nom de la colonne, vous pouvez utiliser MODIFY
:
ALTER TABLE `companies` MODIFY `id` int(11),
DROP PRIMARY KEY,
ADD PRIMARY KEY (`uuid`);
En faisant cela dans une seule instruction alter, il est également traité comme atomique, il n'y a donc aucune chance d'incohérence entre les requêtes (contrairement à l'exécution de plusieurs instructions en ligne).
La requête pour supprimer l'incrémentation automatique est:
alter table companies DROP PRIMARY KEY,
change id id int(11) NOT NULL
Vous pouvez maintenant voir que la structure de la table est sans incrémentation automatique.
Si vous souhaitez ajouter une clé primaire à une autre colonne, utilisez cette requête
alter table companies add PRIMARY KEY(uuid)
Si vous souhaitez supprimer l'incrémentation automatique, la clé primaire et ajouter la clé primaire à la nouvelle colonne dans la même requête, utilisez cette requête
alter table comapnies DROP PRIMARY KEY,
change id id int(11) NOT NULL,
add PRIMARY KEY(uuid)