• 締切済み

UPDATEの更新前の値を取得したい

SQLServer2008を使用して、 UPDATEの更新前と更新後の差分を出そうとしているのですが、 更新前の値が取れません。 更新後の値はOUTPUT句を使用してINSERTED.XXXでとっています。 更新前の値もOUTPUT句を使用してDELETED.XXXでとれるのかと思い試したら INSERTED.XXXと同じ値(更新後の値)が取れてしまいました。 selectをしずに、更新前の値を取得する方法はありますでしょうか? ご存知の方ご教授お願いいたします。

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

質問者さんの認識の通り、本来は、deleted.xxxで更新前の値を取ることができます。 下記のような簡単な例で確認できます。 declare @data table (k int, v int); insert into @data values (1,1),(2,2),(3,3); update @data set v=20  output deleted.v, inserted.v where k=2; 従って、書かれている以外の部分に原因があるはずです。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

私が業務でUpdateかける際には、同一のWhereを用意して 1)select 2)update 3)select の3つをセットにしてspoolしてます。 spoolした1)と3)の差を取ればわかるので。

関連するQ&A