为什么我们不能有多个级联路径?


9

您会看到有关多个级联路径的许多问题被问到。例如:

/programming/851625/foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths

/programming/6065501/multiple-cascade-delete-path-in-many-many-relationship-ef-4-1

/programming/27613117/introducing-foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths-s

然而,从我所看到和理解,这是完全确定要删除子记录很多,而不仅仅是一个的相关主记录的删除的状态。

虽然有一个问题是说SQL Server试图通过防止这种情况发生来确保安全,但我真的不明白,如果我们有多个级联路径,可能会出什么问题?它有什么问题可以使其变得安全

我希望有人可以用简单明了的方式向我解释,最好使用示例说明在多个级联路径的情况下可能出问题的地方。

Answers:


6

“什么地方可能出问题”这个问题只能由Microsoft或Sybase的开发人员回答。当同一记录有多个级联路径时,代码可能会尝试多次删除它。如果不能解决要删除的记录被删除的可能性,则可能会引发错误。显然,此问题实际上存在(或被认为存在!),因此,通过解决此问题,避免了定义重复的级联路径,从而避免了该问题,而不是进行修复。这显然是捷径,因为其他DBMS在这种情况下没有问题。


3
您会认为在使用SQL Server 20年之后,他们会解决这个问题……
Jeremy Holovacs
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.