Maison > base de données > tutoriel mysql > Comment supprimer en toute sécurité des enregistrements de plusieurs tables MySQL ?

Comment supprimer en toute sécurité des enregistrements de plusieurs tables MySQL ?

Mary-Kate Olsen
Libérer: 2025-01-19 10:37:09
original
272 Les gens l'ont consulté

How to Safely Delete Records from Multiple MySQL Tables?

Suppression sécurisée des enregistrements multi-tables MySQL

L'utilisation directe du code suivant pour supprimer des lignes de plusieurs tables simultanément peut entraîner une erreur :

DELETE FROM `pets` p,
            `pets_activities` pa
      WHERE p.`order` > :order
        AND p.`pet_id` = :pet_id
        AND pa.`id` = p.`pet_id`
Copier après la connexion

La solution recommandée est d'utiliser l'instruction JOIN :

DELETE p, pa
      FROM pets p
      JOIN pets_activities pa ON pa.id = p.pet_id
     WHERE p.order > :order
       AND p.pet_id = :pet_id
Copier après la connexion

Alternativement, vous pouvez simplement supprimer les enregistrements de la table pets_activities tout en référençant la table pets :

DELETE pa
      FROM pets_activities pa
      JOIN pets p ON pa.id = p.pet_id
 WHERE p.order > :order
   AND p.pet_id = :pet_id
Copier après la connexion

Cette approche utilise un alias dans la clause FROM pour spécifier la table à supprimer, et est particulièrement utile lorsqu'il s'agit de scénarios complexes avec intégrité référentielle.

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!

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