SQL SERVER 触发器的误区
Posted 风清云淡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SERVER 触发器的误区相关的知识,希望对你有一定的参考价值。
SQL SERVER 触发器的误区
有一个AFTER INSERT 触发器,当同一事务插入多条数据时,触发器触发几次?Inserted暂存表有几条记录?
误区:同一个事务内,肯定只有一次触发,插入几条据 Inserted表内就有几条
实际情况却不尽然,要分情况,看事务内的INSERT INTO 语句怎么写的
情况一.
BEGIN TRAN I
NSERT INTO t1(field1,field2) VALUE(v001,v002);
INSERT INTO t1(field1,field2) VALUE(v001,v002);
COMMIT
结果:触发两次,Inserted表只有一条记录
情况二.
BEGIN TRAN
INSERT INTO t1(field1,field2) VALUES(v101,v102),(v201,v202);
COMMIT
结果:触发一次,Inserted表有两条记录
情况三.
BEGIN TRAN
INSERT INTO t2 SELECT id, name, address FROM t1
COMMIT
结果:触发一次,Inserted表有多条记录
结论:触发次数与是否同一事务无关,与有多个INSER INTO指令有关
以上是关于SQL SERVER 触发器的误区的主要内容,如果未能解决你的问题,请参考以下文章