Utilisez un JOIN dans le DELETE déclaration.
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
Vous pouvez également 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
...à supprimer uniquement de pets_activities
Voir ceci .
Pour les suppressions de table unique, mais avec l'intégrité référentielle, il existe d'autres façons de faire avec EXISTS , NOT EXISTS , IN , NOT IN et etc. Mais celui ci-dessus où vous spécifiez de quelles tables supprimer avec un alias avant le FROM clause peut vous sortir plus facilement de quelques points assez difficiles. J'ai tendance à contacter un EXISTS dans 99% des cas et puis il y a les 1% où cette syntaxe MySQL prend la journée.