私は2つのテーブルを持っています
最初のテーブル Listexecutionaction で構成されます。アクションの。次のようなテーブルの構造
QueueId ActionId Executed
135 44 1
135 45 1
135 46 1
135 47 1
135 48 1
実行された合計アクションの要約で構成される 2 番目のテーブル Listqueue。次のような構造
DDBMSKEY NoOfActivities Completed
135 5 3
私の要件は、Listexecutionaction テーブルのすべての挿入と更新に対して、NoOfActivities と No. of Actions を計算する必要があることです。このために、次のように Listexecutionaction のテーブルにトリガーを書きました。
ALTER TRIGGER [Common].[ActivityStatus_AfterInsertUpdate] ON [Common].[ListExecutionAction] AFTER Insert,Update
AS
BEGIN
UPDATE COMMON.LISTQUEUE
SET
NOOFACTIVITIES=
(SELECT count(ID) FROM common.listexecutionaction WHERE queueid=lstact.queueid),
Completed=
(SELECT count(ID) FROM common.listexecutionaction WHERE queueid=lstact.queueid And Executed=1)
FROM common.listqueue lstqueue left join common.listexecutionaction lstact
ON lstqueue.DDBMSKey= lstact.queueid
WHERE lstqueue.DDBMSKey in (Select queueid from Inserted)
END
テーブルListqueueの私の望ましい出力は次のようになります
DDBMSKEY NoOfActivities Completed
135 5 5
ただし、トリガーが間違った結果を計算している場合があります。完了したアクションの数と結果を与える
DDBMSKEY NoOfActivities Completed
135 5 3
トリガーの何が問題なのかを提案してください。うまくいくときもあれば、失敗するときもあります。Insert と Update の両方でトリガーしたい