在同一个表之间的多对多级联删除

use*_*963 7 sql sql-server cascade sql-server-ce

我正在尝试在SQL Server中的同一个表之间创建多对多关系.

我有一个表Object的列ObjectIdName.

这种关系遵循以下规则:

  • 一个孩子可以有很多父母
  • 父母可以有很多孩子
  • ObjectA可以是ObjectB的子节点,ObjectB可以是ObjectA的子节点
  • 但是一个物体本身不能成为直接的孩子

所以我创建第二个表格ObjectRelation的列ParentIdChildId,当然我希望这些关系通过级联删除.

但是当我在SQL Server中尝试这个时,我得到了错误

在表'tblADMembership'上引入FOREIGN KEY约束'FK_ObjectRelation_Object1'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.

在SQL Server Compact中我得到了

引用关系将导致不允许循环引用.

我做了一些研究,我理解为什么会出现这些错误,但有没有办法解决这个问题,这也适用于SQL Server Compact(所以没有存储过程)?或者有更好的方法来建立这种关系吗?

Mul*_*lki 2

我自己也遇到了类似的问题......我最终删除了外键。循环删除逻辑被推送到Code中。