文章出處
文章列表
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指令有關
文章列表
全站熱搜