下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 數據庫 > MS_SQL > 利用SQL Server觸發器實現表的歷史修改痕跡記錄

          利用SQL Server觸發器實現表的歷史修改痕跡記錄

          時間:2024-02-08 11:17作者:下載吧人氣:19

          在很多應用程序開發中,需要記錄某些數據表的歷史記錄或修改痕跡,以便日后出現數據錯誤時進行數據排查。這種業務需求,我們可以通過數據庫的觸發器來輕松實現歷史記錄功能。

          本文以SQL Server 2005數據庫中的觸發器為例(因為手中的項目用的就是這個數據庫)

          先簡單描述一下SQL Server觸發器。

          SQL Server觸發器的inserted和deleted

          SQL Server為每個觸發器都創建了兩個專用虛擬表:inserted表和deleted表。這兩個表由系統來維護,他們存在于內存中,而不是在數據庫中。這兩個表的結構總是與被該觸發器作用的表結構相同。觸發器執行完成后,與該觸發器相關的兩個表會被刪除(即在內存中銷毀)。

          inserted表存放由執行insert或update語句而要想飆中插入的所有行;即:插入后或更新后的值。
          deleted表存放由delete或update語句而要從表中刪除的所有行;即:刪除或更新錢的值。

          SQL操作 inserted表 deleted表
          增加(insert)記錄 存放新增的記錄 [不可用]
          修改(update)記錄 存放更新后的記錄 存放更新前的記錄
          刪除(delete)記錄 [不可用] 存放被刪除的記錄

          SQL Server觸發器的instead of和after

          SQL Server提供了兩種觸發器:instead of和after觸發器。這兩種觸發器的區別在于他們被激活的時機不同:

          • instead of觸發器用于替代引用觸發器執行的sql語句。除表之外,instead of觸發器也可以用于視圖,用來擴展視圖可以支持更新操作。
          • after觸發器在一個inserted、update或delete語句之后執行,進行約束檢查等動作都在after觸發器被激活之前發生。after觸發器只能用于數據表中。

          說(復制)了這么多,是因為我們要實現的功能需要用到inserted虛擬表、deleted虛擬表和after觸發器。

          實現方法

          通過一個示例來演示具體的實現方法。

          假設當前有一個表:產品表(product),字段為“產品名(name)”、“產品描述(description)”、“單價(unit_cost)”和“生成日期(pub_time)”。

          CREATE TABLE product(name VARCHAR(50),description VARCHAR(200),unit_cost MONEY,pub_time DATETIME)
          GO

          現在我們”上帝”的需求是:需要記錄product表發生數據變化(增、刪、改)時,記錄每次操作改動情況。

          1.創建日志表

          需要創建一個產品日志表(product_log)用來將記錄每次數據改動情況,我這里直接在原數據表的結構上增加兩個字段(在實際開發環境中,大家可以根據需求來設置日志表的表結構),分別為sqlcomm和exectime;代碼如下:

          CREATE TABLE product_log(name VARCHAR(50),description VARCHAR(200),unit_cost MONEY,pub_time DATETIME,sqlcomm varchar(10),exectime datetime)
          GO

          標簽MSSQL,SQLServer,技術文檔,數據庫,SQLSERVER

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 日本不卡一区二区三区视频| 亚洲线精品一区二区三区影音先锋| 亚洲国产AV无码一区二区三区| 亚洲A∨精品一区二区三区| 亚洲无线码在线一区观看| 少妇激情一区二区三区视频| 爆乳熟妇一区二区三区霸乳 | 国产在线精品观看一区| 色噜噜狠狠一区二区三区果冻| 91一区二区三区四区五区 | 亚洲一区AV无码少妇电影| 精品国产一区二区三区久久久狼| 国产福利91精品一区二区三区| 亚洲国产高清在线精品一区| 国产爆乳无码一区二区麻豆 | 欧美日韩综合一区二区三区| 亚洲国产成人久久一区二区三区| 日韩一区二区视频| 日韩精品电影一区亚洲| 日韩A无码AV一区二区三区| 天堂不卡一区二区视频在线观看| 丰满爆乳无码一区二区三区| 亚洲av综合av一区二区三区| 日本精品一区二区三区在线视频一| 日韩一区二区三区视频久久| 国产精品熟女一区二区| 日韩最新视频一区二区三| 亚洲综合无码一区二区痴汉 | 亚洲av无码一区二区三区网站| 香蕉久久av一区二区三区| 亚洲熟妇成人精品一区| 国产人妖视频一区二区| 国产福利电影一区二区三区,日韩伦理电影在线福 | 国产A∨国片精品一区二区| 成人无码AV一区二区| 亚洲色大成网站www永久一区| 精品国产福利第一区二区三区| 国产综合一区二区| 国产精品制服丝袜一区| 亚洲欧美国产国产一区二区三区| 亚洲高清偷拍一区二区三区|