AFTER INSERT 触发器有些时候执行异常
两张表A 和 B,在A上创建触发器如下:
CREATE TRIGGER trg ON A AFTER INSERT AS
DECLARE ...
DECLARE ...
...
BEGIN
SELECT ... FROM INSERTED
IF ...
BEGIN
BEGIN TRANSACTION
//重点操作都在这里
UPDATE B ...
INSERT B ...
//
IF @@ERROR<>0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
END
END
有时客户端大量提交数据,也就是A出现密集的INSERT,触发器被触发,提交结束后再查询B
发现针对A中每INSERT,触发器有被重复执行的迹象,因为针对A中每INSERT,触发器只有一次
INSERT B的 操作,但是B中可能出现多条被INSERT的记录(都是针对A中同一INSERT的)。
这是怎么回事??这个问题不是经常发生,似乎客户端提交数据(INSERT)密度越大越有可能发生。