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

Mary-Kate Olsen
Freigeben: 2024-11-07 09:23:03
Original
710 Leute haben es durchsucht

How to Temporarily Disable Foreign Key Constraints in MySQL?

Vorübergehende Deaktivierung von Fremdschlüsseleinschränkungen in MySQL

In MySQL erzwingen Fremdschlüsseleinschränkungen die referenzielle Integrität und stellen die Datenkonsistenz über verwandte Tabellen hinweg sicher. Es gibt jedoch Szenarien, in denen eine vorübergehende Deaktivierung dieser Einschränkungen erforderlich ist, beispielsweise beim Löschen von Modellen.

Betrachten Sie die folgenden Django-Modelle mit gegenseitigen Fremdschlüsselbeziehungen:

class Item(models.Model):
    style = models.ForeignKey('Style', on_delete=models.CASCADE)

class Style(models.Model):
    item = models.ForeignKey('Item', on_delete=models.CASCADE)
Nach dem Login kopieren

Versuch, eine Instanz zu löschen Das nacheinander Ausführen beider Modelle kann zu einem Fehler führen:

cursor.execute("DELETE FROM myapp_item WHERE n = %s", n)
transaction.commit_unless_managed()  # foreign key constraint fails here

cursor.execute("DELETE FROM myapp_style WHERE n = %s", n)
transaction.commit_unless_managed()
Nach dem Login kopieren

Um diese Fremdschlüsselbeschränkung zu umgehen, können Sie sie mit einer der folgenden Methoden vorübergehend deaktivieren:

1. TASTEN DEAKTIVIEREN:

ALTER TABLE myapp_item DISABLE KEYS;
Nach dem Login kopieren

Dieser Befehl aktiviert die Einschränkungen wieder, sobald die Tabelle erneut geöffnet oder geschlossen wird.

2. SET FOREIGN_KEY_CHECKS:

SET FOREIGN_KEY_CHECKS = 0;  # Disable foreign key checks
Nach dem Login kopieren

Denken Sie daran, die Einschränkungen nach dem Löschvorgang wieder zu aktivieren:

SET FOREIGN_KEY_CHECKS = 1;  # Re-enable foreign key checks
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Fremdschlüsseleinschränkungen in MySQL vorübergehend deaktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage