Maison >base de données >tutoriel mysql >Comment supprimer en toute sécurité des enregistrements de plusieurs tables MySQL ?
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 :
<code class="language-sql">DELETE FROM `pets` p, `pets_activities` pa WHERE p.`order` > :order AND p.`pet_id` = :pet_id AND pa.`id` = p.`pet_id`</code>
La solution recommandée est d'utiliser l'instruction JOIN :
<code class="language-sql">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</code>
Alternativement, vous pouvez simplement supprimer les enregistrements de la table pets_activities
tout en référençant la table pets
:
<code class="language-sql">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</code>
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!