Ако нямате право да променяте таблиците, можете да погледнете EXISTS оператор.
Това ще ви позволи да изтриете редове от таблица само ако заявката вътре в EXISTS върне поне 1 резултат. Можете да го използвате, за да проверите зависимостите.
Можете да напишете 3 заявки:
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 ...
Първият ще се грижи за записа в C който препраща към записи в B който препраща към записи в A които искате да изтриете.
След това можете да премахнете записи от B тъй като няма повече зависимости в C .
Накрая можете да изтриете записи от A използвайки същата логика.