2011-01-10 12 views
2

に発生する前に、私はトリガートリガーの最後の更新された行のIDと最後の削除された行のIDを選択して、彼らはSQL Serverの

を介して他のテーブルを更新するためにそれを使用して、テーブルに更新された行のIDを取得する必要があります。またに必要テーブル内の削除された行のIDを取得して、トリガーを使用して別のテーブルを更新します。

どうすればいいですか?

SQL Serverに組み込まれている関数はありますか?

idColumnNameが列である場合は/

SELECT idColumnName FROM deleted 

を使用すると、いずれかの更新された古い値を知りたい場合は、お使いのトリガー内でこの

+3

新しい行と削除された行は、トリガー内で利用できます。 http://technet.microsoft.com/en-us/library/aa258254(SQL.80).aspx –

+2

更新/挿入/削除は複数の行に影響する可能性があることに注意してください。あなたは 'inserted'と' deleted'疑似**テーブルを使用する必要があります** –

答えて

5

を達成するために助けることができるトリックの種類を削除されていない場合興味のあるIDが含まれています。

このID値を使用して、必要な処理を実行できます。 さらに。更新されるNEW値を使用する場合は、以下のクエリを使用します。これは特に更新の場合、特定のフィールドの古い値または新しい値を比較する場合に便利です。あなたのケースでは、そのID列以来、これはおそらく関連しません。

+0

あなたの答えのために多くの感謝InSane、私はちょうど私が完全にトリガを使用しない実際に挿入され、彼らを忘れてしまった。 – user569392

+2

1つのレコードしかないと仮定します。挿入されたテーブルまたは削除されたテーブルを処理する必要があるコードを書くと、複数の行が並んでいます。 1つのレコードだけが変更されたと仮定すると、トリガー書き込みでの最大の間違いです。次の最悪の間違いは、カーソルを使用してすべてのレコードを調べることです。セットベースのプロセスを使用して複数のrcordを処理します。 – HLGEM

関連する問題