Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách xóa các hàng trong bảng có chứa khóa ngoại đối với các bảng khác

Đầu tiên, dưới dạng bài tập kiểm tra dữ liệu một lần, hãy xóa các hàng bị tách rời, ví dụ:

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

Thứ hai, dưới dạng bài tập thay đổi giản đồ một lần, hãy thêm ON DELETE CASCADE hành động tham chiếu đến khóa ngoại trên bảng tham chiếu, ví dụ:

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;

Sau đó, mãi mãi, các hàng trong bảng tham chiếu sẽ tự động bị xóa khi hàng được tham chiếu của chúng bị xóa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TSQL md5 băm khác với C # .NET md5

  2. Chèn hàng loạt Sql Server hàng triệu bản ghi

  3. Danh sách tất cả các bảng có mối quan hệ với một bảng hoặc dạng xem nhất định

  4. Sử dụng CASE để trả về một chuỗi nếu không có kết quả từ câu lệnh SELECT

  5. Khi nào sử dụng Biểu thức bảng chung (CTE)