Heim > Datenbank > MySQL-Tutorial > Wie entferne ich mehrere Primärschlüssel in MySQL, während ich einen behalte?

Wie entferne ich mehrere Primärschlüssel in MySQL, während ich einen behalte?

Patricia Arquette
Freigeben: 2024-12-28 04:35:10
Original
587 Leute haben es durchsucht

How to Remove Multiple Primary Keys in MySQL While Keeping One?

Primärschlüssel in MySQL entfernen

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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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:

  1. Entfernen Sie den Autoincrement-Eigenschaft von ID:

    ALTER TABLE user_customer_permission MODIFY id INT NOT NULL;
    Nach dem Login kopieren
  2. Löschen Sie die primäre Eigenschaft Schlüssel:

    ALTER TABLE user_customer_permission DROP PRIMARY KEY;
    Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage