SQL Server melakukan penghitungan sederhana jalur kaskade dan, alih-alih mencoba mencari tahu apakah ada siklus yang benar-benar ada, SQL Server mengasumsikan yang terburuk dan menolak untuk membuat tindakan referensial (CASCADE):Anda dapat dan masih harus membuat batasan tanpa tindakan referensial. Jika Anda tidak dapat mengubah desain Anda (atau melakukannya akan membahayakan banyak hal), Anda harus mempertimbangkan untuk menggunakan pemicu sebagai upaya terakhir.
FWIW menyelesaikan jalur kaskade adalah masalah yang kompleks. Produk SQL lainnya hanya akan mengabaikan masalah dan memungkinkan Anda untuk membuat siklus, dalam hal ini akan berlomba untuk melihat mana yang akan menimpa nilai terakhir, mungkin karena ketidaktahuan perancang (misalnya ACE/Jet melakukan ini). Saya mengerti beberapa produk SQL akan mencoba menyelesaikan kasus sederhana. Faktanya tetap, SQL Server bahkan tidak mencoba, memainkannya sangat aman dengan melarang lebih dari satu jalur dan setidaknya itu memberi tahu Anda begitu.
Microsoft sendiri menyarankan penggunaan pemicu daripada batasan FK.