我正在使用SQL Server 2012 Express,由於我真的習慣了PL/SQL,所以有點難以找到我的T-SQL問題的一些答案。觸發記錄插入/更新/刪除的值SQL Server 2012
我有什麼:約7臺具有鮮明的列和另外一個來自其他7
問題記錄插入/更新/刪除值:我怎麼能爲每個表創建一個觸發器,它將修改後的數據存儲在Log
表中,考慮到我無法使用更改數據捕獲,因爲我正在使用SQL Server Express版本?
附加信息:Logs
表中只有兩列需要幫忙填寫;從所有列的改變數據合併,下面的例子:
CREATE TABLE USER_DATA
(
ID INT IDENTITY(1,1) NOT NULL,
NAME NVARCHAR2(25) NOT NULL,
PROFILE INT NOT NULL,
DATE_ADDED DATETIME2 NOT NULL
)
GO
CREATE TABLE AUDIT_LOG
(
ID INT IDENTITY(1,1) NOT NULL,
USER_ALTZ NVARCHAR(30) NOT NULL,
MACHINE SYSNAME NOT NULL,
DATE_ALTERERED DATETIME2 NOT NULL,
DATA_INSERTED XML,
DATA_DELETED XML
)
GO
我需要幫助填充的列是最後兩個(DATA_INSERTED
和DATA_DELETED
)。我甚至不知道,如果數據類型應該是XML,但是當有人要麼
INSERTS
或UPDATES
(僅適用於新的值)/更新的所有列中插入的所有數據USER_DATA
應該以某種方式在合併DATA_INSERTED
。
DELETES
或UPDATES
(僅適用於舊的值),刪除所有數據/更新的所有列的USER_DATA
應該以某種方式對DATA_DELETED
合併。
可能嗎?
我寧願爲每個表而不是一個通用的審覈。它讓歷史變得更簡單。如果您將所有內容都存儲爲XML,則必須將所有的XML碎片化以查看歷史記錄。 –
@SeanLange嗨,謝謝!我不知道「審計」。我谷歌搜索關於它,並找到了我想要的解決方案(種類,將不得不修改我的需要的過程)從[這個答案]的第一個鏈接(http://stackoverflow.com/a/17546860/2970272 )。請張貼它作爲答案,以便我可以接受它。乾杯! – mrbTT
您鏈接的帖子幾乎描述了我正在談論的內容。我不關心這些觀點,我不想重寫那些只是爲了得到一些觀點。很高興你找到了一個可行的解決方案。 –