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.