У меня есть триггер, как показано ниже, логика заключается в изменении статуса FID после изменения статуса fidRule.sql server UPDATE TRIGGER не срабатывает
в моем приложении, i обновить 1 строку в каждом операторе, , но иногда я обнаружил (очень редко) триггер, не стреляющий.
ALTER TRIGGER [dbo].[triggerSetFIDStatus]
ON [dbo].[FIDRules]
AFTER UPDATE
AS
BEGIN
set nocount on
DECLARE @ruleStatus INT
DECLARE @newRuleStatus INT
DECLARE @FIDAlertStatus INT
DECLARE @FIDId INT
DECLARE @isFIDEnabled int
DECLARE @ruleId INT
SELECT @ruleStatus = deleted.alertStatus,
@FIDId = deleted.FIDID,
@ruleId = deleted.id
from
deleted
SELECT @newRuleStatus = inserted.alertStatus
from
inserted
SELECT @FIDAlertStatus = alertStatus,
@isFIDEnabled= isEnabled
FROM FID
WHERE id = @FIDId
IF @FIDAlertStatus <> @newRuleStatus
BEGIN
-- change FID-status by FIDRule-status
UPDATE [dbo].[FID] SET [email protected] WHERE [email protected]
END
IF @newRuleStatus >= 0 AND @newRuleStatus <> @ruleStatus
UPDATE [dbo].[FIDRules] SET isAlertStatChanged=1, AlertStatChangeTime = SYSUTCDATETIME() WHERE [email protected]
END
Включен ли ваш спусковой крючок? Проверьте 'SELECT name, is_disabled FROM sys.triggers' –
Ваш триггер предполагает, что только одна строка будет обновляться сразу. – MartW
@CodeByMoonlight i обновляет 1 строку в каждом заявлении –