【问题标题】:update cascade in self referencing table - best practice?更新自引用表中的级联 - 最佳实践?
【发布时间】:2013-08-10 08:44:39
【问题描述】:

似乎无法在自引用表上设置更新级联。

因此,不能简单地重命名父节点。我能看到的唯一解决方法是创建一个新条目,然后重新链接所有子节点(可能还有其他表中的数据),然后删除旧条目。

由于这相当复杂,是否有更好的解决方案,我目前看不到?

【问题讨论】:

    标签: sql-server sql-server-2008 sql-server-2008-r2


    【解决方案1】:

    最简单的(我想这取决于您的具体情况)解决方案可能是创建一个IDENTITY 主键和引用/自我引用,而不是名称,然后是一个简单的字段。

    这将允许您在不影响任何依赖节点的情况下重命名节点,并且在更新结构的同时仍然保持来自其他表的外键关系变得不那么复杂。

    【讨论】:

    • 总有一个非自然主键,我同意你的观点。
    • 是的,我已经想到了。实际上,这是一个新项目,我想摆脱 id 列,因为在之前的项目中,一切都是用 id 列完成的,这会带来很大的额外负担。
    • 好吧,连同你的回答,我现在将两个世界组合成一个解决方案:每个节点都获得一个作为 nvarchar 的主键,但自引用将通过整数 (id) 完成,整数 (id) 通过唯一索引。顺便说一句,另一个完整的解决方案是使用 hierarchyid,但这是另一个主题。
    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多