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
Susan SarandonOriginal
2024-11-18 07:10:02491Durchsuche

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))

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!

Stellungnahme:
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