2011-01-05 113 views
0

我早就問過如何在單列中包裝多列,關於同樣的問題,但我選擇了另一種方法並完成了這一部分。現在需求已經稍微改變了,如果表中的任何字段是更新的,那麼查詢或觸發器將能夠檢測 - 哪些表具有哪些列以及哪些列。如何在列和表格中保持插入和更新的歷史記錄?

更新

比如我有表tblAddress列地址,辦公電話,手機,城市,國家等。如果用戶更新辦公電話則查詢應能夠檢測表的地址電話號碼有已被更新,並且該消息將被插入到另一個名爲tblHistory的表中,其中tblHistory是我的審計跟蹤維護表,tblAddress是將執行插入更新或刪除操作的地方。

+0

「我希望我的詢問很清楚......」 - 不是...... – 2011-01-05 10:17:05

+0

請繼續..哪部分不清楚......我會解釋 – 2011-01-05 10:19:48

+0

恐怕所有的都是不清楚。 – 2011-01-05 11:10:42

回答

2

嘛,有兩種基本的模式,你可以使用:

  1. 商店都針對每個審覈表(例如tblAddress)在歷史表(例如tblAddress_History)列值當審計表中的行已更新。每個歷史表將基本上反映其相應審計表的模式(可能還有評論或審計信息,例如何時和由誰進行更新)。
  2. 爲歷史表(例如tblHistory)中的各個列存儲單獨的行,供所有審覈表使用;當行更新時,您需要在歷史記錄表中爲每個更新的列創建一個單獨的行。然後,您的歷史記錄表將需要包含列以標識審計表和更新列。
+0

+1選項。除非表中有大量的數據,否則我會選擇簡單的解決方案。 – StefanE 2011-01-05 15:28:00

+0

謝謝,但您提出的方案適用於單個表格。我需要一個動態解決方案,我的前端是使用C#的ASP.Net,在任何表中如果發生插入,更新或刪除事件,那麼審計跟蹤將保留在歷史表中。 – 2011-01-06 16:29:08

+0

我概述的第二個解決方案可以適用於任意數量的表格,因此我的資格「您的歷史記錄表格需要包含列以識別經審計的表格和更新的列。」你可以在你的ASP.NET C#代碼中實現審計,或者你可以在你的後端SQL Server代碼中實現它(以幾種不同的方式)。 – 2011-01-07 16:56:25

相關問題