【发布时间】:2016-11-16 08:45:09
【问题描述】:
我的 SQL 数据库中有许多表,其中包含大量使用级联删除的外键关系。我已经确定现有关系现在需要级联删除。尝试启用此功能会提供有用的信息:
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.
但是,它没有提到通过该组表会导致创建循环关系的其他路径;它只是通过说:
modify other FOREIGN KEY constraints
我不想在实体框架中进行更改,因为我们正在以模型为先。
如何查看相关的竞争外键关系?
【问题讨论】:
-
在删除触发器中手动实现级联删除可能是一种解决方法。因为谁在乎它是否是循环的,最终它不能删除比数据库中更多的数据。但是,如果循环太深,可能会很慢。
-
我不需要遭受触发器的性能影响。我需要确定有助于循环关系的外键,以便确定性地调整它们以避免问题。
标签: sql sql-server tsql sql-server-2012