Đó là những cái tốt nhất và hiệu quả nhất. Đối với các truy vấn sản xuất, tôi sẽ sử dụng 2
.
Các cách khác duy nhất mà tôi có thể nghĩ ra sẽ (IMO) chỉ phù hợp để xóa dữ liệu nhanh chóng và bẩn thỉu trong môi trường thử nghiệm (tránh phải phân tích thứ tự chính xác)
- Tắt tất cả các FK, xóa dữ liệu mong muốn rồi bật lại các FK. Điều này không hiệu quả vì chúng cần được bật lại
WITH CHECK
để tránh để các FK ở trạng thái không đáng tin cậy, có nghĩa là tất cả dữ liệu được bảo quản cần được xác thực lại. - Liệt kê tất cả
DELETE
các câu lệnh trên các bảng bị ảnh hưởng theo thứ tự tùy ý và chạy lô nhiều lần nếu cần cho đến khi thành công mà không có lỗi FK.