2012-01-20 12 views
0

私の更新トリガーは以下の通りです。トリガーにカラムの古い値が反映されていません

CREATE TRIGGER [dbo].[tb_sample_UpdationTrigger] on [dbo].[tb_sample] for UPDATE 
as 
if UPDATE(R_Id) 
insert into dbo.test_log(Attribute,Action,OldValue,NEwValue,UserId,ModifiedDate) 

(SELECT 'R_Id','update',tb_sample.R_Id,inserted.R_Id ,1,GETDATE() 
from inserted 
inner join tb_sample on inserted.id =tb_sample.id) 

。 R_Idを100000から200000に更新します。しかし、ログテーブルに挿入されたレコードは、私たちが古い値と新しい値が表示された場合の両方がある200000

R_Id update 200000  200000  1 2012-01-20 12:38:16.730 

です。 ここにワットが間違っていますか?

答えて

2

古い値を取得するには、deleted特殊テーブルを使用する必要があります。これは、更新が削除アクションと見なされるためです。参照:Using the inserted and deleted Tables。だからあなたの選択は(未テスト)のようになります:

+0

素晴らしい、ありがとう –

関連する問題