Heim > Datenbank > MySQL-Tutorial > Wie schneide ich Tabellen mit Fremdschlüsseleinschränkungen in MySQL ab?

Wie schneide ich Tabellen mit Fremdschlüsseleinschränkungen in MySQL ab?

Susan Sarandon
Freigeben: 2024-11-18 07:10:02
Original
490 Leute haben es durchsucht

How to Truncate Tables with Foreign Key Constraints in MySQL?

Tabellen mit Fremdschlüsseleinschränkungen abschneiden

Das Abschneiden einer Tabelle mit Fremdschlüsseleinschränkungen kann eine Herausforderung sein. Stellen Sie sich vor, Sie versuchen, die Tabelle „mygroup“ zu kürzen, und stoßen dann auf den Fehler:

ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (mytest.instance, CONSTRAINT instance_ibfk_1 FOREIGN KEY (GroupID) REFERENCES mytest.mygroup (ID))
Nach dem Login kopieren

Datenbankschema:

CREATE TABLE mygroup (
   ID    INT NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=InnoDB;

CREATE TABLE instance (
   ID           INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   GroupID      INT NOT NULL,
   DateTime     DATETIME DEFAULT NULL,

   FOREIGN KEY  (GroupID) REFERENCES mygroup(ID) ON DELETE CASCADE,
   UNIQUE(GroupID)
) ENGINE=InnoDB;
Nach dem Login kopieren

Fremdschlüsselprüfungen werden deaktiviert:

Die herkömmliche Methode zum Abschneiden einer Tabelle mit Fremdschlüsseleinschränkungen besteht darin, sie vorübergehend zu deaktivieren sie:

SET FOREIGN_KEY_CHECKS = 0;

TRUNCATE mygroup;
TRUNCATE instance;

SET FOREIGN_KEY_CHECKS = 1;
Nach dem Login kopieren

Achtung: Durch das Deaktivieren von Fremdschlüsselprüfungen können Daten, die gegen die Einschränkungen verstoßen, in die Tabellen eingefügt werden. Dies kann zu Problemen mit der Datenintegrität führen.

Alternativen in Betracht ziehen:

Wenn möglich, erwägen Sie die Verwendung einer DELETE-Anweisung anstelle von TRUNCATE:

DELETE FROM mygroup;
DELETE FROM instance;
Nach dem Login kopieren

DELETE entfernt alle Datensätze aus den Tabellen und berücksichtigt dabei die Fremdschlüsseleinschränkungen. Allerdings dauert die Ausführung länger als TRUNCATE.

Das obige ist der detaillierte Inhalt vonWie schneide ich Tabellen mit Fremdschlüsseleinschränkungen in MySQL ab?. 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