我正在尝试在 SQL Server 中的同一个表之间创建多对多关系。
我有一张Object
带有列ObjectId
和Name
.
关系遵循以下规则:
- 一个孩子可以有很多父母
- 父母可以有很多孩子
- ObjectA 可以是 ObjectB 的子对象,ObjectB 可以是 ObjectA 的子对象
- 但一个对象不能是它自己的直接孩子
所以我创建了第二个ObjectRelation
带有列ParentId
的表ChildId
,当然我希望这些关系被级联删除。
但是当我在 SQL Server 中尝试这个时,我得到了错误
在表“tblADMembership”上引入 FOREIGN KEY 约束“FK_ObjectRelation_Object1”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
在 SQL Server Compact 我得到
引用关系将导致不允许的循环引用。
我已经进行了一些研究,并且理解了为什么会出现这些错误,但是有没有办法解决这个问题,也可以在 SQL Server Compact 上运行(所以没有存储过程)?或者有没有更好的方法来模拟这种关系?