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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

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

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条件で使用するスカラー値を提供する集約文
  • トリガーされるアクション文