Als u de tabellen niet mag wijzigen, kunt u een kijkje nemen in de EXISTS operator.
Hiermee kunt u alleen rijen uit een tabel verwijderen als de query in de EXISTS geef minimaal 1 resultaat terug. Je kunt het gebruiken om afhankelijkheden te controleren.
U kunt 3 vragen schrijven:
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 ...
De eerste zorgt voor opname in C die verwijst naar records in B die verwijst naar records in A die u wilt verwijderen.
Vervolgens kunt u records verwijderen uit B omdat er geen afhankelijkheden meer zijn in C .
Ten slotte kunt u records verwijderen uit A dezelfde logica gebruiken.