回答

收藏

删除同一表之间的多对多

技术问答 技术问答 231 人阅读 | 0 人回复 | 2023-09-14

我在尝试SQL Server的同一张表之间创建多对多关系。7 z; y, M4 Q) o# M' H# @+ H' q3 n! B
上面有一张桌子Object有列ObjectId和Name。
5 ?) o4 D& O. T* w! t6 W关系遵循以下规则:: x+ }5 a6 A' C* u. j+ U
一个孩子可以有很多父母
0 _# S2 @1 N: N: }父母可以有很多孩子6 Z+ T) L( @4 O, e9 |( m" E
ObjectA可以是ObjectB的子代,而ObjectB可以是ObjectA的子代 - K/ X3 y% o. ]1 }% D
但对象不能是自己的直接子代
所以我创建了第二个表格ObjectRelation的列ParentId和ChildId,当然,我希望这些关系删除这些关系。1 d: {- G' @9 n% p% G' ]. P
但是当我在SQL Server在尝试此操作时,会出现错误% {, R& D) f+ K) H! F
在表’tblADMembership’上引入FOREIGN
  i3 B( s) f% R' d( O% s0 H/ f+ GKEY约束’FK_ObjectRelation_Object1’可能导致循环或多个级联路径。ON DELETE NO ACTION或ON
* C2 Y, P7 O9 b5 w% B7 m' N4 w  AUPDATE NO ACTION,或修改其他FOREIGN KEY约束。
, d$ q6 z4 s/ F. X
在SQL Server Compact中间,我得到了
& F7 T5 g8 E) \1 i3 b引用关系会导致不允许循环引用。
8 H7 X+ @* i  ]/ |& m. j7 E. u
我已经进行了一些研究,我理解为什么会出现这些错误,但是有没有一种方法可以在SQL Server0 H  {4 B- h% I; k) n
Compact正常工作(所以没有存储过程)?建立这种关系的模型还是有更好的方法?
5 ?( b/ U4 I  G" v& q- H                                                                6 K% s6 s0 A; h7 k/ |
    解决方案:                                                                / v9 s. l2 x) W2 \( r: z: L
                                                                我也遇到过类似的问题。…最后,我删除了外键。循环删除逻辑被推到代码。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则