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 ?
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()
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
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;
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;
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!