Deaktivieren von Fremdschlüsseleinschränkungen in MySQL für temporäre Datenmanipulation
In MySQL stellen Fremdschlüsseleinschränkungen die Datenintegrität sicher, indem sie Inkonsistenzen in Beziehungen zwischen Tabellen verhindern . Diese Einschränkungen können jedoch manchmal schnelle Datenmanipulationen behindern.
Problem:
Beim Löschen von Instanzen eines Modells in Django können aufgrund von Fremdschlüsseleinschränkungen Fehler auftreten. Zum Beispiel:
cursor.execute("DELETE FROM myapp_item WHERE n = %s", n) transaction.commit_unless_managed() # a foreign key constraint fails here cursor.execute("DELETE FROM myapp_style WHERE n = %s", n) transaction.commit_unless_managed()
Lösung:
Um Fremdschlüsseleinschränkungen vorübergehend zu deaktivieren und Löschvorgänge zuzulassen, können Sie entweder den Befehl DISABLE KEYS verwenden oder die Variable FOREIGN_KEY_CHECKS auf setzen 0.
Verwenden von DISABLE KEYS:
DISABLE KEYS
Dieser Befehl deaktiviert alle Fremdschlüsseleinschränkungen für die aktuelle Sitzung.
Verwenden von SET Variable FOREIGN_KEY_CHECKS:
SET FOREIGN_KEY_CHECKS=0;
Dieser Befehl setzt die globale Variable FOREIGN_KEY_CHECKS auf 0 und deaktiviert alle Fremdschlüsseleinschränkungen.
Wichtig: Nach der Ausführung der gewünschten Daten Denken Sie bei der Manipulation daran, die Fremdschlüsseleinschränkungen wieder zu aktivieren, indem Sie FOREIGN_KEY_CHECKS wieder auf 1 setzen:
SET FOREIGN_KEY_CHECKS=1;
Das obige ist der detaillierte Inhalt vonWie kann ich Fremdschlüsseleinschränkungen in MySQL zur Datenmanipulation vorübergehend deaktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!