sql – 外键级联多路径和循环有什么问题?
在MSSQL 2005中,我刚刚发现了臭名昭着的错误信息:
现在,StackOverflow有关于这个错误消息的几个主题,所以我已经得到了解决方案(在我的情况下我将不得不使用触发器),但我很好奇为什么会有这样的问题. 据了解,基本上有两种想要避免的情况 – 一个循环和多个路径.一个循环将是两个表彼此之间具有级联外键的位置.好的,一个循环也可以跨越几个表,但这是基本的情况,将更容易分析. 当TableA具有TableB和TableC的外键时,多个路径将是TableB,而TableB也有一个外键到TableC.再次 – 这是最基本的情况. 当任何这些表中的记录被删除或更新时,我看不到会出现任何问题.当然,您可能需要多次查询相同的表,以查看哪些记录需要更新/删除,但这真的是一个问题吗?这是一个性能问题吗? 在其他SO主题中,人们将使用级联标记为“risky”,并指出“resolving cascade paths is a complex problem”.为什么?风险在哪里?哪里有问题? 解决方法你有一个从同一个父项的2个级联路径的子表:一个“删除”,一个“空”.什么优先你以后期望什么?等等 注意:触发器是代码,可以为级联添加一些智能或条件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |