17.10 - 行トリガーを使用するべき状況 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-171K-JPN
Language
日本語 (日本)

パフォーマンスや操作の容易性などさまざまな理由からして、行トリガーは文トリガーよりも自然な選択です。

1つまたは複数のトリガーが設定されているデータ変更文を実行すると、システムは文の実行前に1つ(削除または更新操作の場合)または複数(更新操作の場合)の遷移テーブルを作成します。

行トリガーの場合、システムは遷移テーブル セットを1行ずつアクセスしながら走査します。遷移テーブルの順序は指定できないので、遷移テーブルの行の順序に応じて結果が変わることを意図したトリガー対象アクションは記述しないでください。

以下の表に示すように、行トリガーの実行に必要な作業量は、トリガーされるアクションが使用する情報によって異なります。

トリガーされるアクションのデータのソース 説明
処理対象の個々の行
  • DELETEまたはUPDATEは、REFERENCING句にOLD行の相関名が指定されていれば、古い値の行にアクセスできます。
  • INSERTまたはUPDATEは、REFERENCING句にNEW行の相関名が指定されていれば、新しい値の行にアクセスできます。
  • これらの行のフィールドには、指定したWHEN条件およびトリガーされるアクション文からスカラー値としてアクセスできます。
トリガー文によって変更されるすべての行から構成される遷移テーブル
  • DELETEまたはUPDATEは、REFERENCING句にOLD行の相関名が指定されていれば、古い値の行に一時テーブルとしてアクセスできます。
  • INSERTまたはUPDATEは、REFERENCING句にNEW TABLEの相関名が指定されていれば、新しい行にアクセスできます。
  • これらのテーブルの列には、指定したWHEN条件およびトリガーされるアクション文から、外部テーブル参照としてアクセスできます。

    そのような参照は通常、相関名にアクセスしてWHEN条件およびトリガーされるアクション文で使用するスカラー値を提供する集約文で使用します。

変更するテーブルの行の全セット この動作は遷移テーブルの行の場合の動作と似ていますが、OLDまたはNEW値を示す構文がありません。
  • BEFOREトリガーがアクセスする行は、変更が行なわれる前のトリガー テーブルの行です。
  • AFTERトリガーがアクセスする行は、変更が行なわれた後のトリガー テーブルの行です。

この情報はトリガー テーブルに由来するので、REFERENCING句がなくてもアクセスできます。

これらの種類の外部参照では通常、トリガー テーブルへの直接アクセスを以下の方法で使用します。
  • テーブルの名前を使用して列にアクセスし、WHEN条件で使用するスカラー値を提供する集約文
  • トリガーされるアクション文