SQL Server wykonuje proste liczenie ścieżek kaskadowych i zamiast próbować ustalić, czy jakiekolwiek cykle rzeczywiście istnieją, zakłada najgorsze i odmawia tworzenia akcji referencyjnych (KASKADA):możesz i nadal powinieneś tworzyć ograniczenia bez działań referencyjnych. Jeśli nie możesz zmienić swojego projektu (lub może to narazić na szwank), powinieneś rozważyć użycie wyzwalaczy w ostateczności.
FWIW rozwiązywanie ścieżek kaskadowych to złożony problem. Inne produkty SQL po prostu zignorują problem i pozwolą na tworzenie cykli, w którym to przypadku będzie wyścig, który nadpisze wartość jako ostatni, prawdopodobnie z powodu niewiedzy projektanta (np. robi to ACE/Jet). Rozumiem, że niektóre produkty SQL będą próbowały rozwiązać proste przypadki. Fakt pozostaje faktem, SQL Server nawet nie próbuje, zachowuje się wyjątkowo bezpiecznie, nie zezwalając na więcej niż jedną ścieżkę, a przynajmniej tak mówi.
Sam Microsoft zaleca używanie wyzwalaczy zamiast ograniczeń FK.