LINQ-to-SQL で使用する SQL Server データベースで自分自身を参照するテーブルがあります。
行の削除を処理するために、このテーブルにトリガーを作成しました。
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」で競合が発生しました。ステートメントは終了されました。
トリガーがトリガーされていないと思います...
これは事実ですか、それとも他の何かでしょうか?