У меня есть две таблицыТриггер иногда не срабатывает при обновлении и вставке
Первая таблица 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
Пожалуйста, сообщите, что не так в триггере. Иногда он работает нормально и не работает. Я хочу, чтобы вызвать как на Insert и Update
Вы проверили, выполнено ли 'Executed = 1' для всех 5 записей? – Bulat
Да, это не относится к 5 записям, это основано на правильном условии. – Hussain
, поэтому все записи имеют Executed = 1? – Bulat