Hvis du ikke har tilladelse til at ændre tabellerne, kan du tage et kig på EXISTS
operator.
Den vil kun tillade dig at slette rækker fra en tabel, hvis forespørgslen inde i EXISTS
returnere mindst 1 resultat. Du kan bruge den til at kontrollere afhængigheder.
Du kan skrive 3 forespørgsler:
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ørste vil tage sig af registreringen i C
der refererer til poster i B
der refererer til poster i A
som du vil slette.
Så kan du fjerne poster fra B
da der ikke er flere afhængigheder i C
.
Endelig er du i stand til at slette poster fra A
bruger samme logik.