Heim >Datenbank >MySQL-Tutorial >Wie entferne ich mehrere Primärschlüssel in MySQL, während ich einen behalte?
Frage: Wie können Sie Primärschlüssel aus Spalten in einer MySQL-Tabelle entfernen und gleichzeitig einen Primärschlüssel beibehalten?
Szenario:
Betrachten Sie das folgende Tabellenschema, das den Benutzer zuordnet Kunden für Berechtigungen in einer Live-MySQL-Datenbank:
mysql> describe user_customer_permission; +------------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_customer_id | int(11) | NO | PRI | NULL | | | permission_id | int(11) | NO | PRI | NULL | | +------------------+---------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
Sie möchten die Primärschlüssel für user_customer_id undmission_id entfernen und dabei id als Primärschlüssel beibehalten. Versuchen Sie dies jedoch mit dem Befehl alter table user_customer_permission drop Primary Key; führt zu dem Fehler:
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
Antwort:
Autoincrement-Spalten erfordern einen Index. Ohne einen Index wird die Pflege einer Autoinkrementierungsspalte zu teuer. Daher erfordert MySQL, dass eine Autoinkrementierungsspalte ganz links in einem Index steht.
Um den Primärschlüssel aus user_customer_id und freedom_id zu entfernen, führen Sie die folgenden Schritte aus:
Entfernen Sie den Autoincrement-Eigenschaft von ID:
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL;
Löschen Sie die primäre Eigenschaft Schlüssel:
ALTER TABLE user_customer_permission DROP PRIMARY KEY;
Beachten Sie, dass der zusammengesetzte PRIMÄRSCHLÜSSEL ursprünglich alle drei Spalten abdeckte und die Eindeutigkeit der ID nicht garantiert werden kann. Wenn die ID jedoch eindeutig ist, können Sie sie wieder zu einem PRIMARY KEY und AUTO_INCREMENT machen:
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
Das obige ist der detaillierte Inhalt vonWie entferne ich mehrere Primärschlüssel in MySQL, während ich einen behalte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!