我有四个实体A,B,C和D.
A有很多B和C。
B有很多Ds。
C和D之间存在多对多的关系。
这种多对多关系位于以Breeze作为实体CD公开的连接表中。
我想建立一个级联删除,以便删除以下任何行中的第一个实体会产生级联删除。
A -> B -> D -> CD
B -> D -> CD
D -> CD
A -> C -> CD
C -> CD
除了A - >之外,所有其他外键都有级联删除。 C.每次我尝试将其设置为级联删除时SQL Server 2012都会出现以下错误:
无法创建关系'FK_dbo.C_dbo.A_AId'。介绍 表'C'上的FOREIGN KEY约束'FK_dbo.C_dbo.A_AId'可能导致 循环或多个级联路径。指定ON DELETE NO ACTION或 ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。可以 不创造约束。查看以前的错误。
如何解决此错误并接近我正在寻找的内容?
答案 0 :(得分:0)
由于存在多个级联路径,SQL服务器抱怨ON DELETE CASCADE OPTION
一条路径C-> CD和另一条C-> A-> B-> D-> CD
您只需使用ON DELETE CASCADE选项
定义外键即可您可以在表C上创建INSETAD OF DELETE触发器并删除表A中的相应行