Use um
JOIN
no DELETE
declaração. 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
Alternativamente, você pode usar...
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
...para excluir apenas de
pets_activities
Veja este .
Para exclusões de tabela única, mas com integridade referencial, existem outras maneiras de fazer com
EXISTS
, NOT EXISTS
, IN
, NOT IN
e etc. Mas o acima onde você especifica de quais tabelas excluir com um alias antes do FROM
cláusula pode tirá-lo de alguns pontos muito apertados mais facilmente. Eu costumo entrar em contato com um EXISTS
em 99% dos casos e depois há o 1% em que essa sintaxe do MySQL leva o dia.