Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come eliminare tutte le righe dipendenti

Se non sei autorizzato a modificare le tabelle, puoi dare un'occhiata a EXISTS operatore.
Ti permetterà di eliminare righe da una tabella solo se la query all'interno di EXISTS restituire almeno 1 risultato. Puoi usarlo per controllare le dipendenze.

Puoi scrivere 3 domande:

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

Il primo si occuperà della registrazione in C che fa riferimento a record in B che fa riferimento a record in A che desideri eliminare.
Poi puoi rimuovere i record da B poiché non ci sono più dipendenze in C .
Infine, puoi eliminare i record da A utilizzando la stessa logica.