私が知っているのは、COLUMNS_UPDATEDが完璧な解決策であると思われる本物のオンライン書籍でトリガーの更新操作中に更新された列ですが、実際には値が変更されていないかチェックしません。いずれか他の提案がありますか?SQLサーバーのトリガーで更新された列の一覧を取得する方法は?
8
A
答えて
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
関連する問題
- 1. ユーザーがアクセスできるSQLサーバーの一覧を取得
- 2. アセンブリで定義されたXAMLリソースの一覧を取得する方法は?
- 3. 更新されたデータを取得して他の行データを選択するためのSQL更新トリガー
- 4. 更新SQLトリガーの元の値を取得するには
- 5. 複数のストアドプロシージャが実行された後にSQL Serverデータベースに更新/挿入された行の一覧を取得する方法
- 6. SQL Serverの一時テーブルの列の一覧を取得
- 7. Tomcatサーバーのコンテキスト一覧を取得
- 8. SQL Serverトリガーで挿入、更新、削除された行をコピーする方法
- 9. 更新トリガーを実行した後、前のレコードを取得する方法は?
- 10. SQL Server 2008では、別の列が変更された特定の列の値を取得する方法は?
- 11. ファイルが日付時刻の変更されたフォルダ内のファイルの一覧を取得する方法
- 12. 登録されたジオフェンスの一覧を取得する
- 13. ダイアグラムの変更後に更新されたモデルを取得する方法は?
- 14. 特定の列の値を取得する方法行SQLサーバー
- 15. laravel 5.1で更新されたフィールドの総数を取得する方法は?
- 16. onchangeドロップダウンでトリガーされたajaxで行の値を取得する方法は?
- 17. SQLサーバーで最後に挿入された行を取得する方法
- 18. ImmutableJs:ネストされた地図で一覧を更新
- 19. 2列しか更新されない場合のT-SQLトリガー
- 20. SQLサーバー:異なるSQLサーバーデータベースを参照するシノニムの主キー制約列を一覧表示する方法
- 21. SQLサーバーの更新ステートメントがNULLを取得する
- 22. Transact-SQL:文字列の一部を更新する方法
- 23. SQL ServerデータベースのSchemaCrawlerでトリガー情報を取得する方法
- 24. SQLクエリ接続されていないユーザーの一覧を取得する
- 25. djangoでinlineformsetの更新されたフィールドのリストを取得する方法
- 26. コントローラのチェックボックスの一覧を取得する方法
- 27. SQL更新トリガー
- 28. Classic ASPのSQLサーバーの一部のデータをnullに更新する方法
- 29. valueChangeListenerメソッドで更新されたモデル値を取得する方法は?
- 30. 前のイベントがトリガーされた要素のIDを取得する方法は?