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

Sådan sletter du alle afhængige rækker

Hvis du ikke har tilladelse til at ændre tabellerne, kan du tage et kig på EXISTS operator.
Den vil kun tillade dig at slette rækker fra en tabel, hvis forespørgslen inde i EXISTS returnere mindst 1 resultat. Du kan bruge den til at kontrollere afhængigheder.

Du kan skrive 3 forespørgsler:

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

Den første vil tage sig af registreringen i C der refererer til poster i B der refererer til poster i A som du vil slette.
Så kan du fjerne poster fra B da der ikke er flere afhængigheder i C .
Endelig er du i stand til at slette poster fra A bruger samme logik.



  1. Mysql 5.6 hovedpine på Mac OSX

  2. Parsing af en xml-fil og lagring af den i en database

  3. Sådan omdannes en database i MySQL Workbench

  4. Opdatering af SQL Server-tabeller med færre afbrydelser ved hjælp af partitionsskift