sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo eliminar todas las filas dependientes

Si no tiene permiso para modificar las tablas, puede echar un vistazo a EXISTS operador.
Le permitirá eliminar filas de una tabla solo si la consulta dentro de EXISTS devolver al menos 1 resultado. Puede usarlo para comprobar las dependencias.

Puedes escribir 3 consultas:

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 ...

El primero se encargará de grabar en C que hace referencia a registros en B que hace referencia a registros en A que desea eliminar.
Luego puede eliminar registros de B ya que no hay más dependencias en C .
Finalmente, puede eliminar registros de A usando la misma lógica.