Heim >Datenbank >MySQL-Tutorial >Wie schneide ich Tabellen mit Fremdschlüsseleinschränkungen in MySQL ab?
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))
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;
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;
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;
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!