【Oracle】特定の項目が更新された場合のトリガー作成方法

Oracleデータベースでは、特定の列が更新された際に自動的に処理を実行するトリガーを設定することができます。この記事では、特定の項目が更新された場合にトリガーを作成する方法について説明します。

トリガーの基本構造

トリガーは、特定のイベント(挿入、更新、削除など)が発生した際に自動的に実行されるPL/SQLコードのブロックです。特に更新操作に対してトリガーを設定する場合、BEFORE UPDATE または AFTER UPDATE を使用します。

特定の項目が更新された場合のトリガー作成例

以下のサンプルコードは、特定の列が更新された場合にトリガーを実行する方法を示しています。例えば、column_name という列が更新された場合に処理を行うトリガーを作成します。

CREATE OR REPLACE TRIGGER trg_column_update
BEFORE UPDATE OF column_name ON table_name
FOR EACH ROW
BEGIN
    -- 更新処理を実行するコード
    IF :NEW.column_name != :OLD.column_name THEN
        -- ここに更新時の処理を記述
    END IF;
END;
/
  • BEFORE UPDATE OF column_name ON table_name:column_name が更新されたときにトリガーが発火します。この部分でトリガーの対象となる列とテーブルを指定します。
  • FOR EACH ROW:行ごとにトリガーが実行されます。これにより、更新された行に対して個別に処理が行われます。
  • IF :NEW.column_name != :OLD.column_name THEN::NEW は新しい値、:OLD は更新前の値を示します。この条件で、列の値が変更された場合にのみ処理を実行します。

トリガー内での処理内容

トリガー内では、列が更新された場合に必要な処理を実行できます。例えば、変更のログを記録する、別のテーブルを更新する、特定の条件に応じたビジネスロジックを実行するなどが考えられます。

まとめ

Oracleのトリガーを使用すると、特定の列が更新された場合に自動的に処理を実行できるため、データベースの管理や運用が効率化されます。トリガーを正しく設定することで、データの整合性を保ちながら、複雑なビジネスロジックを簡潔に実装できます。