sql >> Database >  >> RDS >> Sqlserver

Alle afhankelijke rijen verwijderen

Als u de tabellen niet mag wijzigen, kunt u een kijkje nemen in de EXISTS operator.
Hiermee kunt u alleen rijen uit een tabel verwijderen als de query in de EXISTS geef minimaal 1 resultaat terug. Je kunt het gebruiken om afhankelijkheden te controleren.

U kunt 3 vragen schrijven:

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

De eerste zorgt voor opname in C die verwijst naar records in B die verwijst naar records in A die u wilt verwijderen.
Vervolgens kunt u records verwijderen uit B omdat er geen afhankelijkheden meer zijn in C .
Ten slotte kunt u records verwijderen uit A dezelfde logica gebruiken.



  1. Probleem met verbindingsreeks in webconfiguratiebestand

  2. Hoe gegevens uit de database ophalen om deze in csv-indeling op een webpagina weer te geven?

  3. Retourneer het einde van de maand in SQLite

  4. Opvragen van boomstructuurgegevens in SQL Server