2010-02-25 6 views
17

J'ai rencontré un problème en ce que j'ai déjà une clé primaire composite dans une table MYSQL. Mais maintenant j'ai ajouté une autre colonne à cette table et en raison de certaines modifications d'exigence, je dois modifier cette clé primaire composite de telle sorte que j'ai besoin d'ajouter cette colonne mentionnée précédemment à cette liste de clés primaires composites. Quelqu'un peut-il me dire comment modifier cette table sans supprimer la clé primaire composite existante. Je le fais dans un projet Railscomment ajouter une nouvelle colonne à la clé primaire composite existante

+0

Notez que j'ai les clés étrangères à certaines des colonnes qui sont la clé primaire composite – nash

+0

Une clé étrangère à une clé primaire partielle? C'est mauvais mojo. Vous devriez vraiment passer à une clé primaire auto-incrémentée. – MindStalker

+0

La suppression d'une clé ne doit pas faire chuter les valeurs - pourquoi ne pas abandonner le PK? – reech

Répondre

25

Vous ne pouvez pas modifier la clé primaire. Vous devez supprimer et ajouter à nouveau:

ALTER TABLE MyTable 
    DROP PRIMARY KEY, 
    ADD PRIMARY KEY (old_col1, old_col2, new_col); 
+0

C'est la manière de le faire s'il y a quelque chose qui vous empêche de laisser tomber la clé primaire – PrashanD

0

mais si une clé n'existe pas? exemple:

ALTER TABLE xxxx ADD id INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY(id,id2,id3); 
Questions connexes