2009-05-27 20 views

答えて

8

値が変更されたかどうかを確認できる唯一の方法は、トリガー内のDELETEDおよびINSERTED仮想テーブルの値を比較することです。 SQLは、新しい値に更新する前に既存の値をチェックしません。新しい値を上書きしても問題ありません。つまり、実際の変更ではなく更新を追跡します。

0

私が考えることができる唯一の方法は、DELETEDとINSERTEDの値を比較してどの列が変更されたかを調べることができることです。

特に優雅な解決策ではありません。

0

お問い合わせthis same question

以前のポスターは正しいです。値を直接比較することなく、データが実際に変更されたかどうかを確認することはできません。しかし、トリガーで何をしようとしているかによって、このタイプのチェックを行う方法はいくつかあります。私の質問には、これらの異なる仕組みとそのトレードオフについての回答には良いアドバイスがあります。

4

他の人が投稿したように、INSERTEDとDELETEDを調べる必要があります。

SELECT * FROM Inserted 
EXCEPT 
SELECT * FROM Deleted 
9

我々が使用することができます。このように - アドバイスの唯一の他の有用なビットを使用すると、値を変更した行のみを取得し(と変化しなかった行を破棄)EXCEPT演算子を使ってできることであるかもしれません特定の列が更新される場合を見つけるために機能を更新します。

IF UPDATE(ColumnName) 

詳細はこのリンクを参照してください:http://msdn.microsoft.com/en-us/library/ms187326.aspx

関連する問題