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

Jak usunąć wiersze w tabelach zawierające klucze obce do innych tabel

Najpierw, jako jednorazowe ćwiczenie oczyszczania danych, usuń osierocone wiersze, np.

DELETE 
  FROM ReferencingTable 
 WHERE NOT EXISTS (
                   SELECT * 
                     FROM MainTable AS T1
                    WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
                  );

Po drugie, jako jednorazowe ćwiczenie dotyczące zmiany schematu, dodaj ON DELETE CASCADE akcja referencyjna na kluczu obcym w tabeli referencyjnej, np.

ALTER TABLE ReferencingTable DROP 
   CONSTRAINT fk__ReferencingTable__MainTable;

ALTER TABLE ReferencingTable ADD 
   CONSTRAINT fk__ReferencingTable__MainTable 
      FOREIGN KEY (pk_col_1)
      REFERENCES MainTable (pk_col_1)
      ON DELETE CASCADE;

Następnie, na zawsze, wiersze w tabelach referencyjnych zostaną automatycznie usunięte, gdy ich wiersz, do którego się odnoszą, zostanie usunięty.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wygeneruj losową wartość int od 3 do 6

  2. Policz rekordy dla każdego miesiąca w roku

  3. Dostęp do dziennika zdarzeń systemu Windows z pakietu SSIS uruchamianego w zadaniu SQL Agent

  4. Co oznacza SELECT ... FOR XML PATH(' '),1,1)?

  5. Jak ZMIENIAĆ wiele kolumn jednocześnie w SQL Server