Pokud nemáte povolení upravovat tabulky, můžete se podívat na EXISTS
operátor.
Umožní vám odstranit řádky z tabulky pouze v případě, že dotaz uvnitř EXISTS
vrátit alespoň 1 výsledek. Můžete jej použít ke kontrole závislostí.
Můžete napsat 3 dotazy:
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 ...
První se postará o záznam v C
který odkazuje na záznamy v B
který odkazuje na záznamy v A
které chcete smazat.
Poté můžete odstranit záznamy z B
protože v C
už nejsou žádné další závislosti .
Konečně můžete odstranit záznamy z A
pomocí stejné logiky.