データベーストリガは、特定のテーブルに対する操作(INSERT、UPDATE、DELETEなど)が発生した際に、自動的に実行される一連の操作のことです。これにより、データの整合性維持や操作履歴の記録など、様々なデータ管理タスクを自動化することができます。
 トリガの種類
トリガは、大きく分けて「行トリガ」と「文トリガ」の2種類があります。
   
行トリガ
       テーブル内の各行に対して、操作が行われるごとに実行されます。例えば、UPDATE文で複数の行が更新される場合、各行ごとにトリガが実行されます。
       トリガ内では、変更前の行を`OLD`、変更後の行を`NEW`という擬似変数で参照できます。
   
文トリガ
       SQL文(INSERT、UPDATE、DELETE)が実行された際に、一度だけ実行されます。例えば、UPDATE文で複数の行が更新されても、トリガは一度しか実行されません。
 トリガの属性
トリガは以下の属性を持ち、実行タイミングや条件を細かく設定できます。
   
BEFORE / AFTER
       トリガを、操作(
SQL文)の実行前(BEFORE)に実行するか、実行後(AFTER)に実行するかを指定します。
   
INSTEAD OF
       トリガを、元の
SQL文の代わりに実行することを指定します。
   
WHEN
       トリガを実行する条件を指定します。条件式が真の場合のみトリガが実行されます。
 トリガの起動イベント
トリガは、主に以下の3つのイベントによって起動されます。
   
INSERT:新しい行が挿入されるとき。
   
UPDATE:既存の行が変更されるとき。また、`UPDATE OF`を指定することで特定の列が変更された場合にのみトリガを起動することも可能です。
   
DELETE:既存の行が削除されるとき。
トリガでは、SELECT文によるデータ取得に影響を与えることはできません。
 主要データベース製品におけるトリガの実装
主要な
データベース製品では、それぞれトリガ機能が実装されており、製品ごとの特徴や構文があります。
 Oracle Database
   標準トリガに加え、スキーマレベルのトリガもサポートしています。スキーマの変更やユーザのログイン/ログオフに対するトリガを設定できます。
   
サポートされるイベント例
       INSERT, UPDATE, DELETE
       AFTER CREATE
       BEFORE/AFTER ALTER
       BEFORE/AFTER DROP
       BEFORE LOGOFF / AFTER LOGON
   標準トリガに加え、ビューに対する`INSTEAD OF`トリガを定義できます。また、
データ定義言語(DDL)トリガもサポートしています。
   
サポートされるイベント例
       INSERT, UPDATE, DELETE
       DROP TABLE
       CREATE TABLE
       ALTER TABLE
       ログイン
   バージョン6.2から標準トリガをサポートしています。
   バージョン8.4で`TRUNCATE`イベント、9.0で`UPDATE OF`、`WHEN`句をサポートしました。
   トリガ内で実行する処理は、関数として定義する必要があります。
   
サポートされるイベント例
       INSERT
       UPDATE / UPDATE OF
       DELETE
       TRUNCATE
   
文法例
sql
CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }
    ON table [ FOR [ EACH ] { ROW | STATEMENT } ]
    [ WHEN (...) ] EXECUTE PROCEDURE funcname ( arguments )
   バージョン5.0.2から標準トリガをサポートしています。
   
サポートされるイベント例
       INSERT
       UPDATE
       DELETE
   
文法例
sql
CREATE TRIGGER salary_trigger
    BEFORE UPDATE ON employee_table
    REFERENCING NEW ROW AS n, OLD ROW AS o
    FOR EACH ROW
    IF n.salary <> o.salary THEN
       ...
    END IF;
 まとめ
データベーストリガは、データの整合性維持、操作履歴の記録、監査など、様々な目的で利用できる強力な機能です。各
データベース製品におけるトリガの実装を理解し、適切に活用することで、より効率的かつ安全な
データベース運用を実現することができます。
 外部リンク
   Oracle CREATE TRIGGER
   DB2 CREATE TRIGGER statement
   Microsoft SQL Server CREATE TRIGGER / DROP TRIGGER
   
PostgreSQL CREATE TRIGGER
   
MySQL Database triggers