2011-07-13 8 views
0

私はすべてのテーブルでGUIDを使用してSQL Server 2008を使用していますが、いくつかのストアドプロシージャを使用しています。私はあなたが更新している現在のGUIDを出力する方法があるかどうかを知りたいですか?更新時にSQL Server 2008のOUTPUTを使用しますか?

私は他の手順で使用している以下のコードがあると知っている:

output inserted.* 
output deleted.* 

はしかし、私が更新し、そうでない、場合はnullインサートである場合があります。それぞれの場合にどのGUIDが使用されたのかを知りたい。私は別のテーブルを作成する別の方法を聞いたことがありますテーブルの値を更新したGUIDに設定し、新しく作成されたテーブルから値をSELECTしますが、それはちょうど非常に冗長で不要です。回避策はありますか?

ありがとうございます!

答えて

1

カラムのデフォルトとしてnewid()を使用していますか、または挿入/更新するときにコードにGUIDを生成していますか?

デフォルト値がNewID()の場合、最後に挿入/更新されたIDを取得するために@@ IDENTITYを使用できたIDであれば、最後に挿入/更新されたIDを取得する方法はありません。

あなたが望むことをやり遂げる方法は、カラムのデフォルトを取って、挿入するコードにNewID()を生成し、それが何であったかを覚えておくことだけです。

(この答えは、あなたがPKのようGUIDを使用している前提で作られた)、それが挿入された値のために働く

+0

まあ。私はまだNEWID()としてGUIDの行のデフォルトを使用し、それは正常に動作します。ただし、Update 1はGUIDを返すことはありません。私にとっては大きな問題ではありませんが、その不便は確かです。 – ImGreg

+0

GUIDはPKですか?そうであれば、あなたはアップデート時にすでにそれを知っています。それ以外の場合は、更新したものと同じtable/where節に基づいてguidを選択するコードを追加して、更新したものを取得してください。 – Treborbob

関連する問題