17.00 - 17.05 - トリガーされるアクション文としてのSET - Advanced SQL Engine - Teradata Database

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

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

SET句は、値を列、変数、またはパラメータに割り当てます。

トリガー アクションが、アクションが完了した後でターゲット テーブルの行を保存する場合、トリガー定義の中でトリガーされるSQL文としてSET句を使用できます。たとえば、SET句はUPDATEおよびINSERT BEFORE行トリガーで使用できますが、DELETE文はターゲット テーブルから行セットを除去するため、DELETE BEFORE行トリガーではSET句を使用できません。

SET句の使用時には、次のルールが適用されます。

  • SETは、NEW ROWと呼ばれる新規の遷移テーブル行の値を変更できますが、OLD ROWは変更できません。
  • SETはNEW ROWとOLD ROWの両方の値を使用できます。
  • 各SET句では、1つの列にのみ値を割り当てることができます。
  • SET式のスカラー式には、以下の要素を任意に組み合わせて指定できます。
    • システム値
    • スカラーの副次式となる引数のある関数
    • スカラーの(集約ではない)ユーザー定義関数
    • NEWまたはOLD行の列を参照する式
    • 定数
  • SET句に含まれる列名が明示的に修飾されていない場合、システムはその列をNEW行の相関名を使用して修飾します。
  • SET割当て句が適用される列にCHECK列または参照整合性制約がある場合、その制約が適用されるのはBEFORE行トリガーのすべてのSET句が適用された後の、列の最後の値だけです。
  • 同一の列を更新する複数のSET句を指定できます。
  • 複数のSET句で同じ列を複数回更新するとき、列に割り当てられる最後の値はシーケンス内で最後のSET句に割り当てられている値であり、それより前の更新は失われます。
  • UDT式をUDT列に割り当てることができます。ただし、ミュテーターSET句の構文はサポートされていません。

    その対処法としては、標準の非ミュテーターSET句構文を使用し、等号の片側に列参照を、反対側にミュテーターを含むUDT式を指定します。