iT邦幫忙

1

SQL SERVR triger 是否會整批異動

  • 分享至 

  • xImage

請問
trigger 觸發時,是整批 還是 一筆資料呢?

比如
delete from A where age<20
他裡練有5 筆資料會被刪除

那trigger 在執行的時候,
是一筆一筆 deleted
還是 5筆一個批次 deleted

那向 整批BLUCK INSERT 時,他也是 整批5筆資料寫入嗎?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
PPTaiwan
iT邦好手 1 級 ‧ 2023-06-23 01:02:31
最佳解答

trigger 觸發時,是整批 還是 一筆資料呢?

  1. 整批
  2. 如果你是用 INSERT INTO A VALUES (...), (...), (...), (...), (...)
    假設一次插入了5筆資料,那麼INSERT觸發器將被觸發一次,inserted 虛擬表中將包含這5筆新插入的資料。

他裡練有 5 筆資料會被刪除 那trigger 在執行的時候,是一筆一筆 deleted 還是 5筆一個批次 deleted 那向整批 BLUCK INSERT 時,他也是整批5筆資料寫入嗎?

DELETE FROM A WHERE age < 20
假設有5筆資料符合條件將被刪除,那麼在觸發器內部,deleted 虛擬表將包含這5筆被刪除的資料。這個觸發器只會觸發一次,並不會為每一筆被刪除的資料分別觸發。

處理觸發器時,應當預期可能會有多筆資料受到影響,而不只是一筆。

noway iT邦研究生 1 級 ‧ 2023-06-23 13:59:06 檢舉

謝謝

0
pilipala
iT邦研究生 5 級 ‧ 2023-06-23 21:39:37

那向 整批BLUCK INSERT 時,他也是 整批5筆資料寫入嗎?

bulk insert 預設不會觸發 trigger,除非自行去啟用,可以參考該篇文章說明 - 在大量匯入資料時,控制觸發程序的執行

我要發表回答

立即登入回答