SQL Server laver simpel optælling af kaskadestier, og i stedet for at forsøge at finde ud af, om der faktisk eksisterer nogen cyklusser, antager den det værste og nægter at oprette referencehandlingerne (CASCADE):du kan og bør stadig oprette begrænsningerne uden de referentielle handlinger. Hvis du ikke kan ændre dit design (eller det ville kompromittere tingene), bør du overveje at bruge triggere som en sidste udvej.
FWIW-løsning af kaskadestier er et komplekst problem. Andre SQL-produkter vil simpelthen ignorere problemet og give dig mulighed for at oprette cyklusser, i hvilket tilfælde det vil være et kapløb om, hvem der vil overskrive værdien sidst, sandsynligvis til designerens uvidenhed (f.eks. ACE/Jet gør dette). Jeg forstår, at nogle SQL-produkter vil forsøge at løse simple sager. Faktum er, at SQL Server ikke engang forsøger, spiller det ekstremt sikkert ved at afvise mere end én sti, og i det mindste fortæller den dig det.
Microsoft anbefaler selv brugen af triggere i stedet for FK-begrænsninger.