構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - テンポラル テーブル サポート

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/cjo1556732840654.ditamap
dita:ditavalPath
ja-JP/cjo1556732840654.ditaval
dita:id
B035-1182
Product Category
Software
Teradata Vantage
<Teradata Vantage™ - テンポラル テーブル サポート>では、特にテンポラル テーブルに関連する構文について説明します。必須ではない構文やテンポラル テーブルに固有ではない構文は、基本的にこのドキュメントには示されていません。その他の構文については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>、および<Teradata Vantage™ - SQLデータ制御言語、B035-1149>を参照してください。
{ CREATE | REPLACE } TRIGGER [ database_name. ] trigger_name
  [ ENABLED | DISABLED ]
  { BEFORE | AFTER }
  [ CURRENT | SEQUENCED | NONSEQUENCED ] VALIDTIME ] | NONTEMPORAL ]
  { INSERT |
    DELETE |
    UPDATE [ OF { column_name [,...] | ( column_name [,...] ) } ]
  }
  ON [ database_name. ] table_name [ ORDER integer ]
  [ REFERENCING reference_spec [...] ]
  [ FOR EACH { ROW | STATEMENT } ]
  [ WHEN ( search_condition ) ]
  { SQL_proc_spec | BEGIN ATOMIC SQL_proc_spec END } [;]
テンポラルSQLのANSI標準へのアプリケーションの移植性を確保するため、すべてのテンポラル修飾子を明示的に指定することを推奨します。
reference_spec
{ OLD [ROW] [AS] old_transition_variable_name |

  NEW [ROW] [AS] new_transition_variable_name |

  { OLD_TABLE | OLD TABLE } [AS] old_transition_table_name |

  { NEW_TABLE | NEW TABLE } [AS] new_transition_table_name |

  OLD_NEW_TABLE [AS] old_new_table_name ( old_value, new_value )
}
SQL_proc_spec
{ SQL_procedure_statement; [...] | ( SQL_procedure_statement; [...] ) }
database_name
trigger_nameの任意選択の修飾子。
trigger_name
作成または置換されるトリガーの名前。
ENABLED
トリガーの実行を使用可能にするキーワード。
DISABLED
トリガーの実行を使用不能にするキーワード。
BEFORE
トリガー イベントまたはトリガー文より前にトリガーを実行するように指定します。
AFTER
トリガーが、トリガーするイベントの後に起動することを指定します。
CURRENT VALIDTIME
トリガーするイベントがvalid-time次元でcurrentのときに、トリガーが起動されます。
対象テーブルは有効時間を含んでいる必要があります。
VALIDTIME
トリガーするイベントがvalid-time次元でsequencedのときに、トリガーが起動されます。
対象テーブルは有効時間を含んでいる必要があります。
SEQUENCED VALIDTIME
NONSEQUENCED VALIDTIME
トリガーするイベントがvalid-time次元でnonsequencedのときに、トリガーが起動されます。
対象テーブルは有効時間を含んでいる必要があります。
NONTEMPORAL
トリガーするイベントがtransaction-time次元で非テンポラルのときに、トリガーが起動されることを指定します。この場合、トリガー起動文にNONTEMPORAL接頭辞を指定する必要があります。
トリガーされるアクション文で、transaction-time列の値を変更できます。
対象テーブルはトランザクション時間を含んでいる必要があります。対象テーブルが有効時間を含んでいる場合、valid-time次元のデフォルト修飾子はNONSEQUENCED VALIDTIMEになります。
NONTEMPORALオプションを使用するには、NONTEMPORAL権限が必要です。
INSERT
このトリガーをトリガーするイベントが、以下のいずれかであることを指定します。
  • INSERT
  • INSERT... SELECT
  • Atomic Upsert
  • MERGE
トリガーは、正規化された行に対しては起動できません。NORMALIZEキーワードについて、詳細はCREATE TABLE/CREATE TABLE...AS (テンポラル形式)と<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
DELETE
このトリガーをトリガーするイベントが、DELETEであることを指定します。
UPDATE
このトリガーをトリガーする文が、以下のいずれかであることを指定します。
  • UPDATE
  • Atomic Upsert
  • MERGE
任意の数の行(ゼロ行でもよい)を更新できます。
トリガーは、正規化された行に対しては起動できません。NORMALIZEキーワードについて、詳細はCREATE TABLE/CREATE TABLE...AS (テンポラル形式)と<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
ON [database_name.]table_name
このトリガーに関連する対象テーブル。
対象テーブルが有効時間を含んでいて、トリガー起動文の前にvalid-time修飾子がない場合は、CURRENT VALIDTIMEがデフォルトになります。対象テーブルがトランザクション時間を含んでいて、トリガーする文の前にNONTEMPORALがない場合は、CURRENT TRANSACTIONTIMEがデフォルトになります。
ORDER integer
対象テーブルに複数のトリガーが定義されているときにの、リクエスト内のトリガーの実行順序。
REFERENCING
トリガーに含まれるWHEN条件とトリガーされるアクションが参照できる変換テーブルを指定します。この句は任意選択であり、デフォルトはありません。
FOR EACH ROW
トリガーが、適格な行ごとに起動されることを指定するキーワードを指定します。適格な行とは、トリガーに指定されたWHEN条件がTRUEと評価される行です。
FOR EACH STATEMENT
トリガーのWHEN条件がTRUEと評価されるときに、リクエスト内の処理済みSQL 文ごとにトリガーを1度起動することを指定するキーワード。
WHEN (search_condition)
トリガーを起動する条件を精錬するための検索条件句。
SQL_procedure_statement
1つ以上の有効なトリガー アクション文。
対象テーブルが非テンポラル テーブルであり、トリガー アクションがテンポラル テーブルを参照する場合は、そのトリガー アクション文にcurrent修飾子が適用されます。
対象テーブルがテンポラル テーブルの場合は、トリガーされるすべてのアクション文がトリガーする文の修飾子を継承します。アクションに別の修飾子が必要な場合には、その文をストアド プロシージャに含めて、このストアド プロシージャをアクション文から呼び出してください。
BEGIN ATOMIC
複数のトリガー アクション文を指定するキーワード。
トリガーされるSQL文の句の先頭にBEGIN ATOMICを指定した場合には、ENDキーワードでそれを終了する必要があります。