Maison > développement back-end > Tutoriel Python > Comment désactiver temporairement les contraintes de clé étrangère dans MySQL pour la manipulation de données ?

Comment désactiver temporairement les contraintes de clé étrangère dans MySQL pour la manipulation de données ?

Susan Sarandon
Libérer: 2024-11-07 08:43:02
original
493 Les gens l'ont consulté

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

Désactivation des contraintes de clé étrangère dans MySQL pour la manipulation temporaire des données

Dans MySQL, les contraintes de clé étrangère garantissent l'intégrité des données en évitant les incohérences dans les relations entre les tables . Cependant, ces contraintes peuvent parfois gêner les manipulations rapides des données.

Problème :

Lors de la suppression d'instances d'un modèle dans Django, des erreurs peuvent survenir en raison de contraintes de clé étrangère. Par exemple :

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()
Copier après la connexion

Solution :

Pour désactiver temporairement les contraintes de clé étrangère et autoriser les suppressions, vous pouvez utiliser la commande DISABLE KEYS ou définir la variable FOREIGN_KEY_CHECKS sur 0.

Utilisation de DÉSACTIVER KEYS :

DISABLE KEYS
Copier après la connexion

Cette commande désactive toutes les contraintes de clé étrangère pour la session en cours.

Utilisation de la variable SET FOREIGN_KEY_CHECKS :

SET FOREIGN_KEY_CHECKS=0;
Copier après la connexion

Cette commande définit la variable globale FOREIGN_KEY_CHECKS sur 0, désactivant toutes les clés étrangères contraintes.

Important : Après avoir effectué la manipulation de données souhaitée, pensez à réactiver les contraintes de clé étrangère en redéfinissant FOREIGN_KEY_CHECKS à 1 :

SET FOREIGN_KEY_CHECKS=1;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal