SQL點(diǎn)滴24 監(jiān)測(cè)表的變化建站知識(shí)
導(dǎo)讀:1建站知識(shí)在網(wǎng)上看到一篇關(guān)于監(jiān)測(cè)表中的插入,更新,刪除的方法,使用觸發(fā)器實(shí)現(xiàn)的,很有價(jià)值。建設(shè)網(wǎng)站公司seo網(wǎng)站優(yōu)化軟件。
有時(shí)候,我們?cè)谀骋恢匾臅r(shí)間段需要監(jiān)控某張表的變化情況,包含插入、更新、刪除。舉例來說,當(dāng)我們把數(shù)據(jù)導(dǎo)出到外部的系統(tǒng)時(shí),我們希望導(dǎo)出的是全部的數(shù)據(jù),而且最好是導(dǎo)出上次導(dǎo)出之后變動(dòng)的數(shù)據(jù)。 作為DBA,我們可采傳統(tǒng)的觸發(fā)器操作,來構(gòu)建一個(gè)元數(shù)據(jù)表或一個(gè)時(shí)間戳列來監(jiān)控?cái)?shù)據(jù)的變化。 代碼如下:Code Listing 1 該代碼在 SQL 2005(SP3), SQL 2008 R2 (RTM with cu5)測(cè)試通過
復(fù)制代碼 代碼如下:
------------------- --Method 1: TRIGGER ------------------- --Base Table Definition IF OBJECT_ID('CheckSumTest', 'U') IS NOT NULL DROP TABLE CheckSumTest GO CREATE TABLE CheckSumTest ( id int IDENTITY(1,1) NOT NULL PRIMARY KEY, vc1 varchar(1) NOT NULL, vc2 varchar(1) NOT NULL ) GO INSERT dbo.CheckSumTest (vc1, vc2) SELECT 'a', 'b' INSERT dbo.CheckSumTest (vc1, vc2) SELECT 'b', 'a' GO --Create Audit Summary Table to hold Meta-Data IF OBJECT_ID('dbo.TableAuditSummary', 'U') IS NOT NULL DROP TABLE dbo.TableAuditSummary CREATE TABLE dbo.TableAuditSummary ( id INT IDENTITY(1,1) NOT 網(wǎng)站seo優(yōu)化培訓(xùn)NULL PRIMARY KEY, TableName sysname NOT NULL, LastUpdate DATETIME NOT NULL, LastExport DATETIME NOT NULL ) GO INSERT dbo.TableAuditSummary (TableName, LastUpdate, LastExport) VALUES ('dbo.CheckSumTest', GETDATE(), GETDATE()) GO --Tables that need exporting SELECT * FROM dbo.TableAuditSummary WHERE LastUpdate>LastExport --Create Trigger on all Base Tables --This fires on any insert/update/delete and writes new LastUpdate column for the table set to Current Date and Time IF OBJECT_ID('dbo.trg_CheckSumTest_MaintainAuditSummary', 'TR') IS NOT NULL DROP TRIGGER dbo.trg_CheckSumTest_MaintainAuditSummary GO CREATE TRIGGER dbo.trg_CheckSumTest_MaintainAuditSummary ON dbo.CheckSumTest AFTER INSERT, U網(wǎng)站seo優(yōu)化PDATE, DELETE AS BEGIN IF (object_id('dbo.CheckSumTest') IS NOT NULL) UPDATE dbo.TableAuditSummary SET LastUpdate=GETDATE() WHERE TableName='dbo.CheckSumTest' END GO --Make an Update UPDATE dbo.CheckSumTest SET vc1='b', vc2='a' WHERE id=1 UPDATE dbo.CheckSumTest SET vc1='a', vc2='b' WHERE id=2 --Check Meta-Data SELECT * FROM dbo.TableAuditSummary WHERE LastUpdate>LastExport --When we have Exported the data, we run the following to reset MetaData UPDATE dbo.TableAuditSummary SET LastExport=GETDATE() WHERE LastUpdate>LastExport
最近我正在讀關(guān)天SQLSERVER在線幫助(BOL)相關(guān)的知識(shí), 我接觸到網(wǎng)站seo優(yōu)化診斷工具了 SQL Server CHECKSUM(), BINARY_CHECKSUM(), and CHECKSUM_AGG() 這幾個(gè)函數(shù), 由此突然想到這些函數(shù)是不是也可以監(jiān)控表的數(shù)據(jù)變化,而事實(shí)證明CHECKSUM_AGG() 函數(shù)盡管被描述為檢測(cè)表的變化,但這里不適用. 使用 CheckSum() and CheckSum_Agg() 函數(shù) CHECKSUM_AGG() 函數(shù), 在Books OnLine 和許多相關(guān)的站點(diǎn)上是這樣描述的, 通常用于檢測(cè)一個(gè)表的數(shù)據(jù)是否更改. 這是一個(gè)代替觸發(fā)器的更好的方法,只是該操作會(huì)引起表掃描的操作。于是我這次我仍然使用元數(shù)據(jù)來跟蹤數(shù)據(jù)的變化,只是新建了列LastChkSum代替了LastUpdate,該列用于保存CHECKSUM_AGG(BINARY_CHECKSUM(*)),它將會(huì)在全表中產(chǎn)生一個(gè)唯一值,以區(qū)別數(shù)據(jù)的變化情況。 代碼如下: Listing 2.聲明: 本文由我的SEOUC技術(shù)文章主頁發(fā)布于:2023-05-22 ,文章SQL點(diǎn)滴24 監(jiān)測(cè)表的變化建站知識(shí)主要講述點(diǎn)滴,標(biāo)簽,SQL網(wǎng)站建設(shè)源碼以及服務(wù)器配置搭建相關(guān)技術(shù)文章。轉(zhuǎn)載請(qǐng)保留鏈接: http://www.bifwcx.com/article/web_4470.html
為你推薦與SQL點(diǎn)滴24 監(jiān)測(cè)表的變化建站知識(shí)相關(guān)的文章
-
通王TWCMS 2.0.3網(wǎng)站模板程序下載
(126)人喜歡 2024-01-15 -
Windows官方原版在哪里下載
(175)人喜歡 2024-01-15 -
WordPress網(wǎng)站模板發(fā)帖標(biāo)題顏色設(shè)置
(131)人喜歡 2024-01-07 -
修改discuz論壇帖子標(biāo)題80字符的長(zhǎng)度限制
(249)人喜歡 2024-01-07 -
wordpress程序調(diào)用不帶超鏈接的Tag標(biāo)簽
(234)人喜歡 2024-01-05 -
網(wǎng)站在不同時(shí)期需調(diào)整內(nèi)容更新的方向
(112)人喜歡 2023-08-12