我有两张桌子
第一个表 Listexecutionaction 由 no 组成。的行动。表结构如下
QueueId ActionId Executed
135 44 1
135 45 1
135 46 1
135 47 1
135 48 1
第二个表 Listqueue 包含已完成的全部操作的摘要。结构如下
DDBMSKEY NoOfActivities Completed
135 5 3
我的要求是对于 Listexecutionaction 表上的每个插入和更新,它应该计算 NoOfActivities 和完成的操作数。为此,我在 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
请提出触发器中有什么问题。有时它工作正常,有时会失败。我想同时触发插入和更新