2014-04-06 43 views
0

如果任何列已更新,我需要在SQL Server 2008 R2的觸發器中進行驗證。檢查在觸發器中更新的任何列

基本上我有一個表,例如EmployeeEmployeeHistory。在Employee表上的任何插入/更新/刪除都應該在歷史記錄中生成一條記錄。我不關心專欄。因此,例如,我可以使用

If Columns_Updated() 

    insert into history??? 
else 
    nothing? 

這是檢查此問題的正確方法嗎?還有其他功能嗎? UPDATE()僅適用於特定列。最佳做法是什麼?我敢肯定,我不是第一個想創建表格歷史記錄的人!

+1

不確定我遵循:'UPDATE'觸發器只會觸發***如果***發生了變化 - 任何更改。因此,觸發更新觸發器的情況下,但沒有更改該行,不存在... –

+0

「列已更新」,你的意思是「列已在更新聲明中列出」或「列的值實際上是由更新聲明「更改? – dean

回答

0

使用Columns_Updated()即可。

但是,如果沒有更新,你的觸發器甚至不會開火,是嗎?

你到底想做什麼?

+0

我發現這篇文章使用此功能的一些問題http://social.msdn.microsoft.com/Forums/sqlserver/en-US/1d881158-31a9-458f-9474-f9f68d5dddde/dont-use-columnsupdated-trigger-update功能?論壇= transactsql我想確保在任何情況下,該功能工作正常。 – rgx71