Используйте JOIN
в выражении 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
В качестве альтернативы вы можете использовать ...
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
... дляудалить только из pets_activities
См. http://dev.mysql.com/doc/refman/5.0/en/delete.html
Для удаления отдельных таблиц, но с сохранением ссылочной целостности, есть другие способы работы с EXISTS, NOT EXISTS, IN, NOT IN и т. д. Новыше, где вы указываете, из каких таблиц удалять с псевдонимом перед предложением FROM, вам будет легче выйти из нескольких довольно узких мест.Я склонен обращаться к EXISTS в 99% случаев, а затем есть 1%, где этот синтаксис MySQL занимает день.