【发布时间】: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]:stackoverflow.com/questions/851625/…
-
不管你想不想,在 SQL Server 中,你都必须使用触发器
标签: sql sql-server