我有一個SQL Server 2008 R2數據庫,其中需要跟蹤對數據所做的某些更改。到目前爲止,我的所有研究都提出了對每一項變更進行相當複雜追蹤的方法,但我的案例更具體一些,我認爲更簡單一些,因爲我只需要追蹤變更,直到它獲得批准(由管理員) 。構建數據庫以跟蹤對數據的某些更改
到目前爲止,我能想到的唯一辦法做到這一點,對於每個受影響的表,創建一個表追蹤(即INSERT
,UPDATE
或DELETE
)類型的變化,主鍵列名,以及在適用的情況下,要改變的數值。
然後,當更改被批准時,可以從中生成一條SQL語句將更改寫入主表。這感覺就像是一種非常笨拙的做法,而且很難查詢它(例如產生一箇舊的vs新的值的列表)。
這是一個非常小的數據庫(< 1000000行),只有大約5個用戶,所以性能不是問題。
編輯: 跟蹤變化的目的是,他們需要被批准之後才能寫入數據庫。數據主要是科學的,具有法律影響,因此用戶(本例中爲客戶)提出的更改需要專家檢查,然後才能獲得批准。一旦他們獲得批准,我們不需要再知道舊的價值觀。所有更改,包括DELETE
聲明都需要此批准。 INSERT
和UPDATE
可以通過創建一個包含更改數據的類似表來處理,但我不知道如何處理刪除。我也想避免額外的表格太多,因爲我需要跟蹤幾個基表,而且我擔心增加的複雜性。
沒有想過觸發器 - 我以前沒有用過它們,所以我不太熟悉它們的功能,但我會閱讀!我曾想過在應用程序方面做這件事,但認爲在數據庫中實現它可能更強大。 – aquavitae 2013-02-16 13:53:01