日韩小视频-日韩久久一区二区三区-日韩久久一级毛片-日韩久久久精品中文字幕-国产精品亚洲精品影院-国产精品亚洲欧美云霸高清

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

軟件下載吧

當(dāng)前位置:軟件下載吧 > 數(shù)據(jù)庫(kù) > MS_SQL > 利用SQL Server觸發(fā)器實(shí)現(xiàn)表的歷史修改痕跡記錄

利用SQL Server觸發(fā)器實(shí)現(xiàn)表的歷史修改痕跡記錄

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

在很多應(yīng)用程序開發(fā)中,需要記錄某些數(shù)據(jù)表的歷史記錄或修改痕跡,以便日后出現(xiàn)數(shù)據(jù)錯(cuò)誤時(shí)進(jìn)行數(shù)據(jù)排查。這種業(yè)務(wù)需求,我們可以通過數(shù)據(jù)庫(kù)的觸發(fā)器來輕松實(shí)現(xiàn)歷史記錄功能。

本文以SQL Server 2005數(shù)據(jù)庫(kù)中的觸發(fā)器為例(因?yàn)槭种械捻?xiàng)目用的就是這個(gè)數(shù)據(jù)庫(kù))

先簡(jiǎn)單描述一下SQL Server觸發(fā)器。

SQL Server觸發(fā)器的inserted和deleted

SQL Server為每個(gè)觸發(fā)器都創(chuàng)建了兩個(gè)專用虛擬表:inserted表和deleted表。這兩個(gè)表由系統(tǒng)來維護(hù),他們存在于內(nèi)存中,而不是在數(shù)據(jù)庫(kù)中。這兩個(gè)表的結(jié)構(gòu)總是與被該觸發(fā)器作用的表結(jié)構(gòu)相同。觸發(fā)器執(zhí)行完成后,與該觸發(fā)器相關(guān)的兩個(gè)表會(huì)被刪除(即在內(nèi)存中銷毀)。

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

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

SQL Server觸發(fā)器的instead of和after

SQL Server提供了兩種觸發(fā)器:instead of和after觸發(fā)器。這兩種觸發(fā)器的區(qū)別在于他們被激活的時(shí)機(jī)不同:

  • instead of觸發(fā)器用于替代引用觸發(fā)器執(zhí)行的sql語(yǔ)句。除表之外,instead of觸發(fā)器也可以用于視圖,用來擴(kuò)展視圖可以支持更新操作。
  • after觸發(fā)器在一個(gè)inserted、update或delete語(yǔ)句之后執(zhí)行,進(jìn)行約束檢查等動(dòng)作都在after觸發(fā)器被激活之前發(fā)生。after觸發(fā)器只能用于數(shù)據(jù)表中。

說(復(fù)制)了這么多,是因?yàn)槲覀円獙?shí)現(xiàn)的功能需要用到inserted虛擬表、deleted虛擬表和after觸發(fā)器。

實(shí)現(xiàn)方法

通過一個(gè)示例來演示具體的實(shí)現(xiàn)方法。

假設(shè)當(dāng)前有一個(gè)表:產(chǎn)品表(product),字段為“產(chǎn)品名(name)”、“產(chǎn)品描述(description)”、“單價(jià)(unit_cost)”和“生成日期(pub_time)”。

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

現(xiàn)在我們”上帝”的需求是:需要記錄product表發(fā)生數(shù)據(jù)變化(增、刪、改)時(shí),記錄每次操作改動(dòng)情況。

1.創(chuàng)建日志表

需要?jiǎng)?chuàng)建一個(gè)產(chǎn)品日志表(product_log)用來將記錄每次數(shù)據(jù)改動(dòng)情況,我這里直接在原數(shù)據(jù)表的結(jié)構(gòu)上增加兩個(gè)字段(在實(shí)際開發(fā)環(huán)境中,大家可以根據(jù)需求來設(shè)置日志表的表結(jié)構(gòu)),分別為sqlcomm和exectime;代碼如下:

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

標(biāo)簽MSSQL,SQLServer,技術(shù)文檔,數(shù)據(jù)庫(kù),SQLSERVER

相關(guān)下載

查看所有評(píng)論+

網(wǎng)友評(píng)論

網(wǎng)友
您的評(píng)論需要經(jīng)過審核才能顯示

熱門閱覽

最新排行

公眾號(hào)

主站蜘蛛池模板: 91久久精品国产91性色tv | 成人永久福利在线观看不卡 | 国产精品久久免费视频 | 玖玖精品国产 | 外国三级毛片 | 久久免费视频网站 | 国产一级毛片视频在线! | 国产精品18久久久久久久久久 | 国产成人v爽在线免播放观看 | 欧美日韩一区二区三区免费不卡 | 免费国产成人高清在线观看不卡 | 国产精品一区伦免视频播放 | 国产精品色内内在线播放 | 一级特级aaa毛片 | 欧美色综合高清视频在线 | 欧美视频在线观看免费精品欧美视频 | 一本一道波多野结衣456 | 看全黄男人和女人视频 | 一级片www| 日本大黄网站 | 免费一级成人免费观看 | 久操精品视频 | 成人欧美在线 | 日本黄页网站免费大全 | 一级做性色a爱片久久片 | 欧美一级成人影院免费的 | 日韩精品欧美激情国产一区 | 亚洲精品国产美女在线观看 | a级片在线观看视频 | 欧美三级美国一级 | 国产伦码精品一区二区三区 | 伊人久久综合热青草 | 国产午夜a理论毛片在线影院 | 不卡午夜| 特黄a三级三级三级 | 99久久精品视香蕉蕉er热资源 | 久久精品久久精品国产大片 | 成人免费网址在线 | 韩国一级毛片视频 | 亚洲在线中文字幕 | 日韩日韩日韩手机看片自拍 |