オラクル トリガー(trigger)の詳細解説
Oracleにおけるトリガーとは、特定のデータベース操作が発生した際に自動的に実行される、PL/SQLコードからなる特殊なデータベースオブジェクトです。トリガーはINSERT、UPDATE、DELETEなどの操作の前または後に実行でき、データベースのビジネスロジックの実現に使用されます。
トリガー作成の構文は以下のようになります。
CREATE [ OR REPLACE ] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF} {INSERT | UPDATE | DELETE | {INSERT | UPDATE | DELETE}}
ON table_name
[REFERENCING OLD AS old NEW AS new]
[FOR EACH ROW]
[WHEN (condition)]
[DECLARE]
-- 声明部分
BEGIN
-- 触发器代码
END;
トリガーの各部分を以下に説明します。
- trigger_name:トリガーの名前
- トリガー実行タイミング。BEFOREは操作前に、AFTERは操作後に、INSTEAD OFは操作の代わりに実行するトリガー。
- INSERT | UPDATE | DELETE: トリガーが関連付けられる操作タイプ。
- ON table_name:トリガーを関連付けるテーブルの名前。
- OLDは古い、NEWは新しい:トリガコードで使用されるOLDとNEWキーワードは、操作前と操作後のデータを表します。このセクションは省略可能です。
- すべてのロウに対してトリガーを、各データ行に対してトリガーさせるように指定します。このオプションを指定しない場合は、トリガーは文レベルでだけトリガーされます。この部分はオプションです。
- WHEN(条件):トリガーの条件で、条件を満たしたときにのみトリガーコードが実行されます。この部分は省略可能です。
- DECLARE:局部変数の宣言に使用可能な、オプションの宣言部。
- トリガーコード: トリガーの実行時に実行されるコードで、PL/SQL コードになります。
トリガーの一般的なユースケースには、次のものがあります。
- データ整合性検証:INSERT、UPDATE、またはDELETEの前にトリガーをトリガーして、ユニーク制約、外部キー制約などのデータ整合性を検証します。
- ログ: データの変更を追跡、監査するために、INSERT、UPDATE、またはDELETE の後にトリガーをトリガーしてデータの変更を記録します。
- トリガ:INSERTもしくはUPDATEの前後にトリガを発火し、他のフィールドにある値から更新する必要があるフィールドの値を計算します。
- データ同期:あるデータベース内のテーブルにデータがインサート、更新、削除されたときに、トリガーによって同期処理が呼び出され、他のデータベースの対応するテーブルでも同じ処理を行う。
トリガはOracleデータベースの重要な機能の1つであり、データベースのビジネスロジック、データの整合性検証、ロギングを実現するために使用できる。