2010-05-20 8 views
3

J'essaie de modifier un tableau en ajoutant une nouvelle colonne en le définissant comme un incrément automatique et avec une touche.mysql ajouter un incrément automatique et une touche supplémentaire

La table a déjà une clé et celle-ci sera un ajout. L'erreur que je reçois est la suivante.

error : Multiple primary key defined 

Mon code est:

alter table user add column id int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 

Je tente également envelopper le nom de clé à savoir

alter table user add column id int (11) NOT NULL AUTO_INCREMENT PRIMARY (id) KEY FIRST; 

Mais toujours pas de chance.

Comment cela peut-il être fait?

+0

Montrez-nous la sortie 'SHOW CREATE TABLE'. –

Répondre

3

nathan à peu près répondu à la question.

Vous trouvez le nom de l'index existant en utilisant la commande SQL SHOW INDEX FROM mydb.mytable. Vous devez d'abord supprimer l'index existant en utilisant DROP_INDEX existing_index ON mydb.mytable.

Ensuite, vous modifiez la table et ajoutez l'index primaire avec votre code.

Enfin, vous créez l'autre index en tant qu'index unique, en utilisant CREATE UNIQUE INDEX unique_index ON mydb.mytable (column).

+0

Quelle est la syntaxe pour 1) trouver le nom de l'index, 2) supprimer l'index et 3) en créer un unique? – Kieveli

+0

Voir la réponse révisée. Tout cela est dans le manuel MySQL pour votre version de MySQL à http://dev.mysql.com/doc/index.html –

2

MySQL ne prend pas en charge les colonnes AUTO_INCREMENT qui ne sont pas la clé primaire. Une option consiste à faire de la colonne AUTO_INCREMENT la clé primaire, et avoir juste une contrainte unique sur l'autre 'clé'.

+1

En fait, c'est le cas. Ce qu'il ne supporte pas est 2 clés primaires. –

+0

Wow, vous avez raison @ypercube, je suis allé pendant des années en pensant autrement. Les docs ne sont pas super claires là-dessus. Merci! – nathan

+0

Vous pouvez aussi ajouter AUTO_INCREMENT sur un INDEX UNIQUE – Marcin

Questions connexes