2011-07-12 54 views
0

我在桌子上做審計線索說客戶表MVC3做審計線索

Customer c1=new Customer(){name="customer1" ,job="IT",city="USA"}; 

說,如果我這樣做對客戶表的更新,我更新客戶城市加拿大

c1.city="CANADA"; 

所以我要做的就是在一個表像這個審計,

  • 客戶ID 1

  • 字段名城市

  • OLDVALUE美國

  • NEWVALUE加拿大

等等.... whtever字段更新。

我的問題是,說我有更多的領域,我如何實現這一點?

我如何比較老的記錄與更新的記錄要檢查哪些字段CHANGED.HOW我可以捕捉那些改變的字段,並將其保存在審計表

回答

1

我不會。使用數據庫觸發器,以便無論何時在相關表上運行UPDATE,都會捕獲更新前的行的狀態並將其放入審計表。

+0

在我們的環境中,數據庫觸發器的使用受到限制,在這種情況下您建議如何? –

+0

您試圖讓策略發生變化,因爲觸發器是這裏最好的工具。如果你真的做不到,那麼你別無選擇,只能拔出當前記錄,將它與新記錄進行比較,並將更改保存到審計表中,作爲也進行更新的事務的一部分。 – Tridus

+0

不會在大金融世界發生。所以需要更好的解決方案。如果在CRUD轉換時進行比較是唯一的選擇,那麼就是這樣。我正在尋找比觸發或比較更聰明的答案。 –

0

我過去所做的是使用存儲過程來處理數據事務。在存儲過程中,我會在更新目標表之前將要更改的行插入到審計表中。然而,審計表不是最容易閱讀的,因爲每次用戶單擊保存按鈕時,它都會創建一個審計記錄,但它比準確比較每個單獨的行的值以及具體查看「 「改變了。對於我們不得不進入審計線索的次數來說,列值比較的額外努力是不值得的。我們的審計試驗更多是爲了捕獲變更的數據,因此如果需要,我們可以將其還原,儘管我們也捕獲了誰和何時。