17.10 - トリガーおよびMERGEリクエスト - 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
日本語 (日本)

MERGEリクエストは、トリガーを起動するためのトリガー文として使用できますが、できません文としては使用できません。

MERGEリクエストが実行されるとき、WHEN MATCHED句が指定されている場合は、UPDATEアクションで定義されたトリガーがアクティブ化され、WHEN NOT MATCHED句が指定されている場合は、INSERTアクションで定義されたトリガーがアクティブ化されます。

UPDATEトリガーおよびINSERTトリガーがアクティブ化される順序は、MERGE文のWHEN MATCHED句およびWHEN NOT MATCHED句の順序と同じです。

MERGEを指定したVantage実装と、MERGEを指定したトリガーの実装のANSI SQL:2011規格との間には、わずかな違いがあります。ANSI SQL:2011規格では、トリガーを次のようにMERGEリクエストで実装することを推奨しています。

ターゲット テーブルに対して行の更新と新しい行の挿入が発生したときに指定される最初の句 マージ中のアクションのシーケンス
WHEN MATCHED (UPDATE指定)
  1. UPDATEアクションに関連するすべてのBEFOREトリガーが適用されます。
  2. UPDATE指定で指定された更新が適用されます。
  3. 制約がチェックされ、場合によっては参照アクションの実行という結果になります。
  4. UPDATEアクションに関連するAFTERトリガーが適用されます。
  5. INSERTアクションに関連するBEFOREトリガーが適用されます。
  6. INSERT指定で指定された挿入が適用されます。
  7. 制約がチェックされ、場合によっては参照アクションの実行という結果になります。
  8. INSERTアクションに関連するAFTERトリガーが適用されます。
WHEN NOT MATCHED (INSERT指定)
  1. INSERTアクションに関連するBEFOREトリガーが適用されます。
  2. INSERT指定で指定された挿入が適用されます。
  3. 制約がチェックされ、場合によっては参照アクションの実行という結果になります。
  4. INSERTアクションに関連するAFTERトリガーが適用されます。
  5. UPDATEアクションに関連するすべてのBEFOREトリガーが適用されます。
  6. UPDATE指定で指定された更新が適用されます。
  7. 制約がチェックされ、場合によっては参照アクションの実行という結果になります。
  8. UPDATEアクションに関連するAFTERトリガーが適用されます。

一方、Vantageは次のようにMERGEリクエストにトリガーを実装します。

ターゲット テーブルに対して行の更新と新しい行の挿入が発生したときに指定される最初の句 マージ中のアクションのシーケンス
WHEN MATCHED (UPDATE指定)
  1. UPDATEアクションに関連するすべてのBEFOREトリガーが適用されます。
  2. INSERTアクションに関連するすべてのBEFOREトリガーが適用されます。
  3. UPDATE指定で指定された更新が適用されます。
  4. 制約がチェックされ、場合によっては参照アクションの実行という結果になります。
  5. INSERT指定で指定された挿入が適用されます。
  6. 制約がチェックされ、場合によっては参照アクションの実行という結果になります。
  7. UPDATEアクションに関連するAFTERトリガーが適用されます。
  8. INSERTアクションに関連するAFTERトリガーが適用されます。
WHEN NOT MATCHED (INSERT指定)
  1. INSERTアクションに関連するすべてのBEFOREトリガーが適用されます。
  2. UPDATEアクションに関連するすべてのBEFOREトリガーが適用されます。
  3. UPDATE指定で指定された更新が適用されます。
  4. 制約がチェックされ、場合によっては参照アクションの実行という結果になります。
  5. INSERT指定で指定された挿入が適用されます。
  6. 制約がチェックされ、場合によっては参照アクションの実行という結果になります。
  7. INSERTアクションに関連するAFTERトリガーが適用されます。
  8. UPDATEアクションに関連するAFTERトリガーが適用されます。

MERGE文の詳細については、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。