Maison > base de données > tutoriel mysql > Pourquoi ne puis-je pas supprimer un enregistrement de tâche : violation de contrainte de clé étrangère ?

Pourquoi ne puis-je pas supprimer un enregistrement de tâche : violation de contrainte de clé étrangère ?

Patricia Arquette
Libérer: 2025-01-14 16:17:44
original
568 Les gens l'ont consulté

Why Can't I Delete a Job Record: Foreign Key Constraint Violation?

Erreur : violation de contrainte de clé étrangère – Suppression des lignes parentales

Tenter de supprimer un enregistrement de tâche (par exemple, DELETE FROM jobs WHERE job_id = 1 LIMIT 1;) entraîne l'erreur #1451 : « Impossible de supprimer ou de mettre à jour une ligne parent : une contrainte de clé étrangère échoue ». Cela se produit parce que la table advertisers a une clé étrangère faisant référence au jobs de la table advertiser_id.

Schéma de base de données :

La base de données comprend ces tables :

  • advertisers :

    • advertiser_id (clé primaire)
    • name, password, email, address, phone, fax, session_token
    • Contrainte de clé étrangère advertisers_ibfk_1 référencement jobs.advertiser_id
  • jobs :

    • job_id (clé primaire)
    • advertiser_id (clé étrangère)
    • name, shortdesc, longdesc, address, time_added, active, moderated

Résolution : Désactiver temporairement les contraintes de clé étrangère

La solution consiste à désactiver temporairement les vérifications de clés étrangères pour permettre la suppression, puis à les réactiver pour préserver l'intégrité des données :

<code class="language-sql">SET FOREIGN_KEY_CHECKS = 0;  -- Disable foreign key checks

DELETE FROM `jobs` WHERE `job_id` = 1 LIMIT 1; -- Delete the problematic job record

SET FOREIGN_KEY_CHECKS = 1;  -- Re-enable foreign key checks</code>
Copier après la connexion

Cette méthode permet la suppression tout en conservant l'intégrité référentielle globale de la base de données. N'oubliez pas d'examiner attentivement les implications de la désactivation des vérifications de clé étrangère et d'utiliser cette approche uniquement lorsque cela est absolument nécessaire.

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