Använd en JOIN
i DELETE
uttalande.
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
Alternativt kan du använda...
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
...för att endast ta bort från pets_activities
Se detta .
För raderingar av enstaka tabeller, men med referensintegritet, finns det andra sätt att göra med EXISTS
, NOT EXISTS
, IN
, NOT IN
och etc. Men den ovan där du anger från vilka tabeller som ska tas bort med ett alias före FROM
klausul kan lättare få dig ur några ganska trånga ställen. Jag brukar nå ut till en EXISTS
i 99 % av fallen och sedan är det 1 % där denna MySQL-syntax tar dagen.