Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Fremdschlüsseleinschränkungen in MySQL zur Datenmanipulation vorübergehend deaktivieren?

Wie kann ich Fremdschlüsseleinschränkungen in MySQL zur Datenmanipulation vorübergehend deaktivieren?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 08:43:02381Durchsuche

How to Temporarily Disable Foreign Key Constraints in MySQL for Data Manipulation?

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!

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