Ich habe viele Tabellen in meiner SQL-Datenbank mit einer großen Anzahl von Fremdschlüsselbeziehungen, die cascade delete verwenden. Ich habe festgestellt, dass eine bestehende Beziehung Kaskadenlöschung erfordert. Der Versuch, damit diese die hilfreiche Nachricht gibt:Ermitteln der CASCADE DELETE-Pfade, die das Hinzufügen eines neuen kaskadierten Löschvorgangs verhindern
Unable to create relationship Introducing FOREIGN KEY constraint on table may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors.
Allerdings ist es nicht die anderen Pfade durch den Satz von Tabellen erwähnen, dass die Schaffung einer zyklischen Beziehung führen würde; es ausweicht einfach das Problem, indem er sagt:
modify other FOREIGN KEY constraints
Ich möchte keine Änderungen in Entity Framework machen, wie wir modell ersten arbeiten.
Wie kann ich die relevanten konkurrierenden Fremdschlüsselbeziehungen sehen?
Manuelles Implementieren der kaskadierenden Löschung in einem Lösch-Trigger könnte möglicherweise eine Problemumgehung sein. Weil, wen es interessiert, wenn es zyklisch ist, am Ende, es kann nicht mehr Daten löschen, als es in der Datenbank gibt. Es kann jedoch langsam sein, wenn es zu tief durchläuft. – AXMIM
Ich muss nicht den Leistungseinbruch eines Triggers erleiden. Ich muss die Fremdschlüssel bestimmen, die zu der zyklischen Beziehung beitragen, so dass ich sie deterministisch anpassen kann, um das Problem zu vermeiden. –