sql – 外键级联多路径和循环有什么问题?

前端之家收集整理的这篇文章主要介绍了sql – 外键级联多路径和循环有什么问题?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在MSsql 2005中,我刚刚发现了臭名昭着的错误信息:

Introducing FOREIGN KEY constraint XXX on table YYY may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION,or modify other FOREIGN KEY constraints.

现在,StackOverflow有关于这个错误消息的几个主题,所以我已经得到了解决方案(在我的情况下我将不得不使用触发器),但我很好奇为什么会有这样的问题.

据了解,基本上有两种想要避免的情况 – 一个循环和多个路径.一个循环将是两个表彼此之间具有级联外键的位置.好的,一个循环也可以跨越几个表,但这是基本的情况,将更容易分析.

当TableA具有TableB和TableC的外键时,多个路径将是TableB,而TableB也有一个外键到TableC.再次 – 这是最基本的情况.

当任何这些表中的记录被删除或更新时,我看不到会出现任何问题.当然,您可能需要多次查询相同的表,以查看哪些记录需要更新/删除,但这真的是一个问题吗?这是一个性能问题吗?

在其他SO主题中,人们将使用级联标记为“risky”,并指出“resolving cascade paths is a complex problem”.为什么?风险在哪里?哪里有问题?

解决方法

你有一个从同一个父项的2个级联路径的子表:一个“删除”,一个“空”.

什么优先你以后期望什么?等等

注意:触发器是代码,可以为级联添加一些智能或条件.

原文链接:https://www.f2er.com/mssql/82731.html

猜你在找的MsSQL相关文章