Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment supprimer toutes les lignes dépendantes

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.