初版2009/08/07: 最終更新日2009/08/07
3-2.  トリガーでの利用
目次
データベーストリガーとは
PL/SQLにてデータベーストリガーを作成する
特殊な変数
注意点
データベーストリガーとは
データベーストリガーとは、データベースの表に対して何らかのアクション(挿入、更新、削除)が行われた場合に呼び出される処理の事を言います。
データベースの変更に合わせて、定型的な処理を行う必要がある場合に利用します。
例えば、複数のテーブルを同期させる場合などに利用すると便利でしょう。
PL/SQLにてデータベーストリガーを作成する
PL/SQLにてデータベーストリガーを作成するのは、ストアドファンクションやストアドプロシージャを作成する場合とさほど変わりはありません。以下のようなコードで作成することが出来ます。
CREATE OR REPLACE TRIGGER [トリガー名]
   [タイミング] [処理] ON [表名] FOR EACH ROW
BEGIN
   [処理]
END;
項目 設定値 説明
[タイミング] BEFORE [処理]の前にトリガーを実行する設定です。
AFTER [処理]の後にトリガーを実行する設定です。
[処理] INSERT 行が追加された時にトリガーを実行する設定です。
UPDATE 行が更新された時にトリガーを実行する設定です。
DELETE 行が削除された時にトリガーを実行する設定です。
[表名] 任意の表名 [タイミング]で指定されたタイミングで、[処理]を行う対象の表を指定します。
[処理] 任意の処理 処理の実態を記述します。
特殊な変数
データベーストリガーでは表に変更があった場合に処理が発生する為、変更する前後のデータを取得する手段が必要です。
それらを取得する為に特殊な変数が用意されています。
その変数を利用して、変更の前後のデータを比較して処理を実行することが出来ます。

変数名 説明
:new 処理の後のレコードオブジェクトを表します。
例えば「:new.code」のようにテーブルの列の値を取得することが出来ます。
:old 処理の前のレコードオブジェクトを表します。
注意点
データベーストリガーを表に設定する際に注意しなければいけない点が幾つかあります。
一つはデータベーストリガーにて他の表を更新する際、その表にトリガーが存在すると無限ループする可能性がある点です。
異なる表をお互いにトリガーで更新するような処理は控えましょう。
また、データベーストリガーを多用する場合は、取り扱いに注意しましょう。
クライアントプログラムでテーブルに更新をかけた場合に、思わぬ結果をもたらす事があります。
PL/SQL


__________ NOD32 4304 (20090804) Information __________

This message was checked by NOD32 antivirus system.
http://canon-sol.jp/product/nd