0

我有一个在我的 SQL Server 数据库中引用自身的表,我将它与 LINQ-to-SQL 一起使用。

我在这个表上创建了一个触发器来处理行的删除。

ALTER TRIGGER [dbo].[TrgDeleteCalculation]
ON [dbo].[Calculation]
INSTEAD OF DELETE
AS 
BEGIN
    DELETE FROM Calculation WHERE CalcParentId IN (SELECT CalculationId FROM deleted)
    DELETE FROM Calculation WHERE CalculationId IN (SELECT CalculationId FROM deleted)
END

当我尝试在 DataModel 中执行删除时会出现问题。

当我这样做时,出现以下异常:DELETE 语句与 SAME TABLE REFERENCE 约束“FK_calculations_calculations”冲突。冲突发生在数据库“DesignDb”、表“dbo.Calculation”、列“CalcParentId”中。该语句已终止。

我怀疑触发器没有被触发...

是这样吗,还是其他原因?

4

1 回答 1

0

看起来您在第一个删除查询中删除的一个子记录是另一个子行的父行。

看看这篇文章:

自引用外键约束和删除

于 2012-04-25T21:06:14.630 回答