删除级联在此方案中不起作用

时间:2013-04-18 11:17:13

标签: sql sql-server

方案: 用户可以像Friends一样创建关系类型,然后用户可以将其他一些用户链接为关系定义。如果删除了用户,则应删除关系定义,并且还需要删除用户之间的关系。

这是sql server上的演示数据库设计:http://i.stack.imgur.com/3pcOy.png 外键是:

  1. 表2.UserId参考表1.UserId;
  2. 表3.RelationShipId参考表2.RelationshipId;
  3. 表3.UserId参考表1.UserId;
  4. 表3.OtherUserId参考表1.UserId;
  5. 我的目标是当从表1中删除记录时,它将删除表2和表3中的相关记录;当从表2中删除记录时,它将删除表3中的相关记录。

    当我尝试使用“ON DELETE CASCADE”时,会出现错误“可能导致循环或多个级联路径”,我也不想使用触发器。

    你对这种情况有什么建议吗? 谢谢,

1 个答案:

答案 0 :(得分:0)

表3中的用户ID是否冗余?或者至少如果你将用户ID放在表3中,为什么要有表2呢?表2中的信息已经存在于表3中。

是否存在表3中的用户ID与表2中的关系记录不同的情况?如果不是 - 表2是多余的。