Suppression de tables croisées MySQL : dépannage des erreurs de syntaxe
Dans MySQL, la suppression simultanée de lignes de plusieurs tables nécessite une syntaxe de requête spéciale. Lorsque vous essayez d'exécuter la requête de suppression suivante :
DELETE FROM `pets` p, `pets_activities` pa WHERE p.`order` > :order AND p.`pet_id` = :pet_id AND pa.`id` = p.`pet_id`
Vous pouvez rencontrer l'erreur suivante :
<code>Uncaught Database_Exception [ 1064 ]: You have an error in your SQL syntax; check the manual...</code>
Cette erreur provient d'une erreur de syntaxe lors de la suppression de tables croisées. Pour résoudre ce problème, utilisez JOIN dans l'instruction DELETE :
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
Alternativement, pour supprimer uniquement de la table pets_activities
, vous pouvez utiliser :
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
En utilisant l'instruction JOIN de cette manière, vous pouvez effectuer efficacement des opérations de suppression de tables croisées dans MySQL. Gardez à l’esprit que cette approche fonctionne également pour les suppressions de table unique 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!