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

Xếp tầng trên Xóa hoặc sử dụng Trình kích hoạt?

CASCADE DELETE trong MSSQL Server chỉ có thể phân tầng thành một bảng duy nhất. Nếu bạn có hai bảng có mối quan hệ khóa ngoài với một bảng thứ nguyên, bạn chỉ có thể xóa theo tầng cho một trong số chúng. (Điều này nhằm ngăn chặn việc xóa xếp tầng qua nhiều đường dẫn và tạo ra xung đột, giống như C ++ cho phép đa kế thừa nhưng C # chỉ cho phép thừa kế một lần)

Khi rơi vào trường hợp này, bạn buộc phải sử dụng trình kích hoạt hoặc xử lý cụ thể trường hợp trong mã của mình.

Vì lý do này, tôi đã thấy nhiều người chọn sử dụng trình kích hoạt trong mọi trường hợp. Ngay cả khi chỉ có một bàn nước ngoài. Điều này đảm bảo tính nhất quán và vì vậy mọi người biết những gì cần tìm khi duy trì cơ sở dữ liệu.

Nếu một người có thể sắp xếp việc xóa thành nhiều hơn một bảng, tôi sẽ nói rằng đó sẽ là lựa chọn thích hợp nhất. Tuy nhiên, hạn chế này làm mờ vùng nước và tôi hiện đang ủng hộ hơn các tác nhân kích hoạt sở hữu tất cả các hành vi như vậy. Chi phí trong việc sử dụng trình kích hoạt để xóa và cập nhật theo tầng chỉ là nhỏ về mặt mã hóa, nhưng cho phép thực hiện các phương pháp tiêu chuẩn thực sự chung chung.

CHỈNH SỬA:

Bạn có thể muốn chuyển 'câu trả lời được chấp nhận' cho người khác, tôi đã phát hiện ra rằng mình đã sai ở phần trên.

Bạn CÓ THỂ có nhiều bảng dữ kiện có BẬT XÓA CASCADE Đối chiếu Khóa Ngoại vào bảng Thứ nguyên dấu hiệu.

Những gì bạn không thể làm là có một Bảng dữ kiện có BẬT XÓA Ràng buộc khóa ngoại CASCADE đối với nhiều Bảng thứ nguyên.

Vì vậy, ví dụ:...
- Bảng thứ nguyên [Người] (id INT IDENTITY,)
- Bảng thứ nguyên [Bài kiểm tra] (id INT IDENTITY,)
- Bảng khuôn mặt [Điểm thi] (person_id INT, exam_id INT, điểm INT)

Nếu Người hoặc Bài kiểm tra bị xóa, bạn muốn (các) bản ghi Exam_Score liên quan cũng bị xóa.

Điều này không thể thực hiện được bằng cách sử dụng BẬT XÓA CASCADE trong MS SQL Server, do đó cần phải có trình kích hoạt.

(Xin lỗi Mehrdad, người đã cố gắng giải thích điều này cho tôi nhưng tôi hoàn toàn không hiểu ý anh ấy.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chức năng cuộn lên - Thay thế NULL

  2. Loại bỏ và tạo lại cơ sở dữ liệu trong Microsoft SQL Server

  3. EAV qua SQL Server

  4. Tại sao điều chỉnh hiệu suất SQL là kỹ năng quản lý cơ sở dữ liệu quan trọng nhất cần có

  5. Triển khai LocalDB trên PC khách