首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 觸發器工作原理深度解析:inserted/deleted 邏輯雙表機制與 @@rowcount 多行影響處理

     編輯:關於SqlServer

觸發器功能強大,MS SQL Server 如何管理觸發器完成任務?本節詳細介紹工作原理與實現機制。

核心機制:兩大特殊邏輯表

每個觸發器擁有 inserted(插入表) 與 deleted(刪除表) 兩個邏輯表:

  • 由系統管理,儲存在記憶體中,**非資料庫儲存**,不允許用戶直接修改
  • 結構**永遠與觸發器作用的表結構相同**
  • 動態駐留記憶體,觸發器工作完成後自動刪除
  • 主要保存用戶操作影響的原始資料值或新資料值
  • 唯讀:用戶不可寫入,但可引用資料(如 select * from deleted 查看刪除表資訊)

12.7.1 插入表功能

定義插入型觸發器的表,執行插入操作時,所有插入行的副本存入插入表。**插入表專儲存向原表插入的內容**。

12.7.2 刪除表功能

定義刪除型觸發器的表,執行刪除操作時,所有刪除行存入刪除表。目的:觸發器遇強制中止語句時,可從刪除表恢復被刪行。

更新操作的雙表機制

更新含兩部份:先移除舊值,再插入新值。定義更新型觸發器的表,報告更新操作時:**刪除表存舊值,插入表存新值**。

觸發器啟動與 @@rowcount 處理多行影響

  • 觸發器**僅當定義操作被執行時才啟動**(插入/刪除/更新)
  • 每條 SQL 語句**僅啟動觸發器一次**,但可能影響多筆記錄
  • 變數 @@rowcount 儲存 SQL 執行後影響的記錄數,可用於計算觸發器 SQL 執行後影響記錄總和
  • 一般先用 IF 測試 @@rowcount 值決定後續語句是否執行
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved