我有一个在表上更新后触发的触发器,一个事务中有2个更新。触发器在第一个更新后被调用。我期望触发器在整个事务后再更新视图,但这并不是真实情况:
我的事务:
- 更新表
- 调用触发器,触发器只看到从1更新的数据
- 更新表
- 不会调用触发器,因为第3次更新的条件不匹配
是否可以设置触发器以便在事务完成后触发器查看数据(包括1和3)?
我的触发器:
ALTER TRIGGER "dbo"."TRIGGER"
ON TABLE
FOR UPDATE
AS
IF (SELECT COUNT(*) FROM inserted i, deleted d
WHERE d.aaa IS NULL
AND i.aaa IS NOT NULL
AND i.bbb IN ('0', '1', '6', '9')) > 0
BEGIN
INSERT INTO export (aaa, ccc)
(SELECT aaa, ccc FROM inserted)
END
初始化数据:insert into TABLE(aaa,bbb,ccc) values(123,'N',100)
更新:
update TABLE set bbb = '0' where aaa = 123
update TABLE set ccc = 1 where aaa = 123
期望的语句是:insert into export(123,1)
但实际执行的是:insert into export(123,100)