Collection Contents 前へ 次へ PDF

ASA SQL リファレンス・マニュアル

SQL 文

CREATE TRIGGER 文 [SQL Remote]


説明 

この文は、データベースへの新しいトリガの作成に使用します。特に SQL Remote が使用するために設計されたトリガのフォームが 1 つ用意されています。

構文 

CREATE TRIGGER trigger-name trigger-time
trigger-event, ...
ORDER integer ] ON table-name
REFERENCING [ OLD AS old-name ]
   [ NEW AS new-name ] ]
   [ REMOTE AS remote-name ] ]
FOR EACH { ROW | STATEMENT } ]
WHEN ( search-condition ) ]
IF UPDATE ( column-name ) THEN
[ { AND | OR } UPDATE ( column-name ) ] ... ]
   compound-statement
ELSEIF UPDATE ( column-name ) THEN
[ { AND | OR } UPDATE ( column-name ) ] ...
    compound-statement
END IF ] ]

trigger-time:
BEFORE | AFTER | RESOLVE

trigger-event:
DELETE | INSERT | UPDATE
UPDATE OF column-name [, column-name, ...]

パラメータ 

trigger-time    ロー・レベルのトリガを定義して、挿入、更新、または削除の前 (BEFORE) または後 (AFTER) に実行できます。文レベルのトリガは、文の後 (AFTER) に実行されます。RESOLVE トリガ時間は、SQL Remote と一緒に使用します。これは、ロー・レベルの UPDATE または UPDATE OF カラム・リストの前でだけ起動されます。

BEFORE UPDATE トリガは、ローを対象に UPDATE が実行されるたびに起動されます。この場合、新しい値が古い値と異なるかどうかは問題ではありません。一方、AFTER UPDATE トリガは、新しい値が古い値と異なる場合にのみ起動されます。

トリガ・イベント    トリガは次のイベントの 1 つまたは複数によって起動できます。

使用法 

特に制限なし

パーミッション 

RESOURCE 権限またはテーブルに対する ALTER パーミッションが必要です。または、DBA 権限が必要です。CREATE TRIGGER はテーブルにテーブル・ロックを設定するので、テーブルを排他的に使用してください。

関連する動作 

オートコミット

参照 
説明 

CREATE TRIGGER 文は、データベースのテーブルに関連するトリガを作成し、そのデータベースにトリガを格納します。

BEFORE UPDATE トリガは、ローに対して更新が実行されるたびに起動されます。この場合、新しい値が古い値と異なるかどうかは問題ではありません。一方、AFTER UPDATE トリガは、新しい値が古い値と異なる場合にのみ起動されます。

ロー・レベルのトリガと文レベルのトリガ 

トリガをロー・レベルのトリガとして宣言すると、各ローを修正する前または後にトリガが実行されます。また、トリガを文レベルのトリガとして宣言すると、トリガ文全体が完了してから、トリガが実行されます。

ロー・レベルのトリガを定義して、挿入、更新、または削除の前 (BEFORE) または後 (AFTER) に実行できます。文レベルのトリガは、文の後 (AFTER) に実行されます。解析 (RESOLVE) トリガ時間は、SQL Remote と一緒に使用します。これは、ロー・レベルの UPDATE または UPDATE OF columun-list イベントの前にだけ起動されます。

トリガをロー・レベルのトリガとして宣言するには、FOR EACH ROW 句を使用します。トリガを文レベルのトリガとして宣言するには、FOR EACH STATEMENT 句を使用するか、または FOR EACH 句を省略します。わかりやすくするために、文レベルのトリガを宣言する場合、FOR EACH STATEMENT 句を入力することをおすすめします。

起動の順序 

同じタイミング (before、after、resolve) で起動される同じタイプ (insert、update、delete) のトリガは、ORDER 句を使用して起動する順序を決定します。

削除、挿入された値の参照 

REFERENCING OLD 句と REFERENCING NEW 句を使用すると、削除されたり挿入されたローを参照できます。この句の性格上、UPDATE は削除とそれに続く挿入として取り扱われます。

REFERENCING REMOTE 句は SQL Remote で使用します。これを使うと、UPDATE 文の VERIFY 句に設定されている値を参照できます。これは、必ずカラム・リストのトリガ RESOLVE UPDATE または RESOLVE UPDATE OF と一緒に使用してください。

REFERENCING OLD と REFERENCING NEW の意味は、トリガがロー・レベルのトリガと文レベルのトリガのどちらかによって異なります。ロー・レベルのトリガの場合、REFERENCING OLD 句を使うと、更新または削除する前のローの値を参照できます。また、REFERENCING NEW 句を使うと、挿入または更新された値を参照できます。OLD ローと NEW ローは、BEFORE と AFTER トリガの中で参照できます。REFERENCING NEW 句を使うと、BEFORE トリガの新しいローを修正してから、挿入または更新操作を行うことができます。

文レベルのトリガの場合、REFERENCING OLD と REFERENCING NEW 句は、ローの古い値と新しい値を保持している宣言されたテンポラリ・テーブルを参照します。これらのテーブルのデフォルト名は deleted inserted です。

WHEN 句を使うと、探索条件が true と評価されたローに対してのみトリガが起動されます。

同じ値を使った値の更新 

BEFORE UPDATE トリガは、ローを対象に UPDATE が実行されるたびに起動されます。この場合、新しい値が古い値と異なるかどうかは問題ではありません。一方、AFTER UPDATE トリガは、新しい値が古い値と異なる場合にのみ起動されます。

 

Collection Contents 前へ 次へ PDF