我有一个像下面这样的触发器,逻辑是在fidRule状态改变后更改FID状态。SQL服务器UPDATE TRIGGER不会触发
在我的应用程序,我更新每行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名称,is_disabled FROM sys.triggers' –
你的触发器假设只有一行是一次更新的。 – MartW
@CodeByMoonlight我在每个语句中更新1行 –