SQL Server thực hiện việc đếm đơn giản các đường dẫn theo tầng và thay vì cố gắng tìm hiểu xem có chu trình nào thực sự tồn tại hay không, nó sẽ giả định điều tồi tệ nhất và từ chối tạo các hành động tham chiếu (CASCADE):bạn có thể và vẫn nên tạo các ràng buộc mà không có các hành động tham chiếu. Nếu bạn không thể thay đổi thiết kế của mình (hoặc làm như vậy sẽ ảnh hưởng đến mọi thứ) thì bạn nên xem xét sử dụng trình kích hoạt như một phương sách cuối cùng.
FWIW giải quyết các đường dẫn tầng là một vấn đề phức tạp. Các sản phẩm SQL khác sẽ đơn giản bỏ qua vấn đề và cho phép bạn tạo các chu trình, trong trường hợp đó sẽ là một cuộc chạy đua để xem cái nào sẽ ghi đè giá trị cuối cùng, có thể là do người thiết kế thiếu hiểu biết (ví dụ:ACE / Jet thực hiện điều này). Tôi hiểu một số sản phẩm SQL sẽ cố gắng giải quyết các trường hợp đơn giản. Sự thật vẫn còn, SQL Server thậm chí không thử, chơi nó cực kỳ an toàn bằng cách không cho phép nhiều hơn một đường dẫn và ít nhất nó cho bạn biết như vậy.
Bản thân Microsoft cũng khuyên bạn nên sử dụng các trình kích hoạt thay vì các ràng buộc FK.