0

DB2の行トリガーとステートメントトリガーの違いを見つけようとしましたが、まだよくわかりません:)特定のテーブルの更新された列ごとに、列の名前が別のテーブルに記録される場合がありますLOG テーブルの行。したがって、行トリガーを使用すると、そのテーブル行が更新されるトランザクション内のすべての行に対して、トリガーが開始されます。ステートメント トリガーで、そのテーブルの 10 行が更新された場合、更新トリガーは 1 回だけ開始されますか? その場合、ステートメント トリガーは行トリガーと同じように動作しますが、より最適なだけですか?

行トリガーでは、DELETED または INSERTED パラメーターにアクセスすると、更新された行へのポインターを取得できることを理解しています。しかし、ステートメント トリガーはどうでしょうか。DELETED および INSERTED パラメータには、特定の列のすべての行のリストが含まれていますか?

4

1 に答える 1

1

Information Center のトリガーの設計に関するセクションを参照してください。

このセクションでは、トリガーがいつ発生するかについての情報を見つけることができます。

トリガーがアクティブ化されると、次のように粒度のレベルに従って実行されます。

行ごとに

影響を受ける行のセット内の行数と同じ回数実行されます。トリガーされたアクションの影響を受ける特定の行を参照する必要がある場合は、FOR EACH ROW 粒度を使用します。この例は、AFTER UPDATE トリガーで更新された行の新しい値と古い値の比較です。

各ステートメントについて

トリガー イベント全体に対して 1 回実行されます。

影響を受ける行のセットが空の場合 (つまり、検索された UPDATE または DELETE で WHERE 句が行を修飾しなかった場合)、FOR EACH ROW トリガーは実行されません。ただし、FOR EACH STATEMENT トリガーは引き続き 1 回実行されます。

また、古いデータと新しいデータに行単位でアクセスする方法、または一度にテーブル全体にアクセスする方法についても説明します。

于 2013-11-02T17:54:49.220 に答える