Jeśli nie możesz modyfikować tabel, możesz spojrzeć na EXISTS
operatora.
Umożliwi to usunięcie wierszy z tabeli tylko wtedy, gdy zapytanie znajduje się w EXISTS
zwróć co najmniej 1 wynik. Możesz go użyć do sprawdzenia zależności.
Możesz napisać 3 zapytania:
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 ...
Pierwszy zajmie się zapisem w C
który odwołuje się do rekordów w B
który odwołuje się do rekordów w A
które chcesz usunąć.
Następnie możesz usunąć rekordy z B
ponieważ nie ma więcej zależności w C
.
Nareszcie możesz usunąć rekordy z A
używając tej samej logiki.