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.