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.