Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak usunąć wszystkie zależne wiersze

Jeśli nie możesz modyfikować tabel, możesz spojrzeć na EXISTS operatora.
Umożliwi to usunięcie wierszy z tabeli tylko wtedy, gdy zapytanie znajduje się w EXISTS zwróć co najmniej 1 wynik. Możesz go użyć do sprawdzenia zależności.

Możesz napisać 3 zapytania:

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

Pierwszy zajmie się zapisem w C który odwołuje się do rekordów w B który odwołuje się do rekordów w A które chcesz usunąć.
Następnie możesz usunąć rekordy z B ponieważ nie ma więcej zależności w C .
Nareszcie możesz usunąć rekordy z A używając tej samej logiki.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Wyświetl klucz podstawowy

  2. Czy istnieje domyślna kolejność według kolumny w SQL Server?

  3. Wybór między dwiema datami w polu DateTime — SQL Server

  4. Sprawdzanie nakładania się przedziałów czasowych, problem strażnika [SQL]

  5. Wybierz wartość, jeśli warunek w SQL Server