2010-02-25 20 views
17

Wystąpił problem polegający na tym, że już mam złożony klucz podstawowy w tabeli MYSQL. Ale teraz dodałem kolejną kolumnę do tej tabeli i ze względu na pewne zmiany wymagań, muszę zmodyfikować ten złożony klucz podstawowy w taki sposób, że muszę dodać tę wcześniej wspomnianą kolumnę do tej złożonej listy klucza głównego. Czy ktoś może mi powiedzieć, jak zmienić tę tabelę bez upuszczania istniejącego złożonego klucza podstawowego. Robię to w projekcie Railsowymjak dodać nową kolumnę do istniejącego złożonego klucza podstawowego

+0

Zauważ, że mam kluczy obcych do niektórych kolumn, które są w kompozytowej klucz podstawowy – nash

+0

klucz obcy do częściowego klucz podstawowy? To złe mojo. Naprawdę powinieneś przełączyć się na automatyczny klucz podstawowy. – MindStalker

+0

Upuszczenie klucza nie powinno zrzucić wartości - dlaczego nie możesz upuścić PK? – reech

Odpowiedz

25

Nie można zmienić klucza podstawowego. Musisz go upuścić i ponownie dodać:

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

To jest sposób, aby to zrobić, jeśli jest coś, co uniemożliwia upuszczenie klucza podstawowego – PrashanD

0

, ale czy klucz nie istnieje? przykład:

ALTER TABLE xxxx ADD id INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY(id,id2,id3); 
Powiązane problemy