Heim > Artikel > Backend-Entwicklung > Wie kann ich Fremdschlüsseleinschränkungen in MySQL zur Datenmanipulation vorübergehend deaktivieren?
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!