删除级联在这种情况下不起作用[重复]
Posted
技术标签:
【中文标题】删除级联在这种情况下不起作用[重复]【英文标题】:Delete cascade doesn't work in this scenario [duplicate] 【发布时间】:2013-04-11 11:31:09 【问题描述】:场景: 用户可以创建一个关系类型,比如朋友,然后用户可以链接一些其他用户作为关系定义。如果用户被删除,关系定义也应该被删除,用户之间的关系也需要被删除。
这是一个在 sql server 上的演示数据库设计:http://i.stack.imgur.com/3pcOy.png 外键是:
-
表 2.UserId 参考表 1.UserId;
表 3.RelationShipId 参考表 2.RelationshipId;
表 3.UserId 参考表 1.UserId;
表 3.OtherUserId 参考表 1.UserId;
我的目标是删除表1中的记录时,会删除表2和表3中的相关记录;删除表2中的记录时,会删除表3中的相关记录。
当我尝试使用“ON DELETE CASCADE”时,出现“可能导致循环或多个级联路径”错误,我也不想使用触发器。
您对这种情况有什么建议吗? 谢谢,
【问题讨论】:
数据库? PostgreSQL、mysql、ORACLE……? @RGPT 看起来像图片中的 SQL 服务器 你能解释一下设计吗?我感觉问题可能出在设计本身 您是否在此处寻找已回答的解决方案? [试试这个...][1] [1]:***.com/questions/851625/… 不管你想不想,在 SQL Server 中,你都必须使用触发器 【参考方案1】:表 3 中的 userid 不是多余的吗?或者至少如果您将用户 ID 放在表 3 中,为什么还有表 2?表2中的信息已经存在于表3中。
是否曾经出现过表 3 上的用户 id 与表 2 上的关系记录不一样的情况?如果不是 - 表 2 是多余的。
【讨论】:
我已经在描述中添加了场景。以上是关于删除级联在这种情况下不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章