Om du inte har tillåtelse att ändra tabellerna kan du ta en titt på EXISTS
operator.
Den tillåter dig att ta bort rader från en tabell endast om frågan i EXISTS
returnera minst 1 resultat. Du kan använda den för att kontrollera beroenden.
Du kan skriva tre frågor:
DELETE C c
WHERE EXISTS (SELECT 1
FROM B b
WHERE c.b = b.b
AND EXISTS (SELECT 1
FROM A a
WHERE a.a = b.a
AND ... ));
DELETE B b
WHERE EXISTS (SELECT 1
FROM A a
WHERE a.a = b.a
AND ...);
DELETE A a
WHERE ...
Den första tar hand om registreringen i C
som refererar till poster i B
som refererar till poster i A
som du vill ta bort.
Då kan du ta bort poster från B
eftersom det inte finns fler beroenden i C
.
Äntligen kan du ta bort poster från A
med samma logik.