@Adrian Cornishs Antwort ist richtig. Das Löschen eines vorhandenen Primärschlüssels hat jedoch noch eine weitere Einschränkung. Wenn dieser Primärschlüssel von einer anderen Tabelle als Fremdschlüssel verwendet wird, wird beim Löschen eine Fehlermeldung angezeigt. In einigen Versionen von MySQL war die dortige Fehlermeldung fehlerhaft (ab 5.5.17 ist diese Fehlermeldung immer noch vorhanden
alter table parent drop column id;
ERROR 1025 (HY000): Error on rename of
'./test/#sql-a04_b' to './test/parent' (errno: 150).
Wenn Sie einen Primärschlüssel löschen möchten, auf den von einer anderen Tabelle verwiesen wird, müssen Sie zuerst den Fremdschlüssel in dieser anderen Tabelle löschen. Sie können diesen Fremdschlüssel neu erstellen, wenn Sie ihn nach dem erneuten Erstellen des Primärschlüssels noch möchten.
Bei der Verwendung von zusammengesetzten Schlüsseln ist auch die Reihenfolge wichtig. Diese
1) ALTER TABLE provider ADD PRIMARY KEY(person,place,thing);
and
2) ALTER TABLE provider ADD PRIMARY KEY(person,thing,place);
sind nicht dasselbe. Beide erzwingen die Eindeutigkeit dieser Gruppe von drei Feldern, jedoch gibt es vom Standpunkt der Indizierung einen Unterschied. Die Felder werden von links nach rechts indiziert. Betrachten Sie beispielsweise die folgenden Abfragen:
A) SELECT person, place, thing FROM provider WHERE person = 'foo' AND thing = 'bar';
B) SELECT person, place, thing FROM provider WHERE person = 'foo' AND place = 'baz';
C) SELECT person, place, thing FROM provider WHERE person = 'foo' AND place = 'baz' AND thing = 'bar';
D) SELECT person, place, thing FROM provider WHERE place = 'baz' AND thing = 'bar';
B kann den Primärschlüsselindex in der ALTER-Anweisung 1 verwenden.
A kann den Primärschlüsselindex in der ALTER-Anweisung 2 verwenden.
C kann einen der beiden Indizes verwenden.
D kann keinen der beiden Indizes verwenden
A verwendet die ersten beiden Felder in Index 2 als Teilindex. A kann Index 1 nicht verwenden, da es den Zwischenplatzteil des Index nicht kennt. Es kann jedoch immer noch möglich sein, einen Teilindex nur für eine Person zu verwenden.
D kann keinen der beiden Indizes verwenden, da er keine Person kennt.
Weitere Informationen finden Sie in den MySQL-Dokumenten hier .