sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man tar bort alla beroende rader

Om du inte har tillåtelse att ändra tabellerna kan du ta en titt på EXISTS operator.
Den tillåter dig att ta bort rader från en tabell endast om frågan i EXISTS returnera minst 1 resultat. Du kan använda den för att kontrollera beroenden.

Du kan skriva tre frågor:

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örsta tar hand om registreringen i C som refererar till poster i B som refererar till poster i A som du vill ta bort.
Då kan du ta bort poster från B eftersom det inte finns fler beroenden i C .
Äntligen kan du ta bort poster från A med samma logik.



  1. Hur begränsar man en databastabell så att bara en rad kan ha ett visst värde i en kolumn?

  2. Undantag ORA-08103:objektet existerar inte längre vid användning av setfetchsize av Hibernate

  3. PHP/MySQL-tidszonsförtydligande

  4. Vägledning om hur du använder WITH-satsen i SQL