dポイントプレゼントキャンペーン実施中!

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

A 回答 (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;

従って、書かれている以外の部分に原因があるはずです。
    • good
    • 0

私が業務でUpdateかける際には、同一のWhereを用意して


1)select
2)update
3)select
の3つをセットにしてspoolしてます。

spoolした1)と3)の差を取ればわかるので。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す