Si vous n'êtes pas autorisé à modifier les tables, vous pouvez jeter un œil au EXISTS
opérateur.
Il vous permettra de supprimer des lignes d'une table uniquement si la requête à l'intérieur du EXISTS
renvoie au moins 1 résultat. Vous pouvez l'utiliser pour vérifier les dépendances.
Vous pouvez écrire 3 requêtes :
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 ...
Le premier s'occupera de l'enregistrement en C
qui référence les enregistrements dans B
qui référence les enregistrements dans A
que vous souhaitez supprimer.
Ensuite, vous pouvez supprimer des enregistrements de B
puisqu'il n'y a plus de dépendances en C
.
Enfin, vous pouvez supprimer des enregistrements de A
en utilisant la même logique.