文章出處

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指令有關


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()