MySQLトリガーの使用方法


  1. トリガーの作成と構文

トリガーを作成するには、以下のような構文を使用します。

CREATE TRIGGER トリガー名
BEFORE/AFTER イベント
ON テーブル名
FOR EACH ROW
BEGIN
    -- トリガーの処理内容
END;
  1. レコードの挿入時にトリガーを使用する例

以下の例では、usersテーブルに新しいユーザーが挿入されると、user_logsテーブルにログが追加されるトリガーを作成します。

CREATE TRIGGER new_user_trigger
AFTER INSERT
ON users
FOR EACH ROW
BEGIN
    INSERT INTO user_logs (user_id, action) VALUES (NEW.id, '新規ユーザーが追加されました');
END;
  1. レコードの更新時にトリガーを使用する例

以下の例では、ordersテーブルのamount列が更新されると、order_logsテーブルにログが追加されるトリガーを作成します。

CREATE TRIGGER order_update_trigger
AFTER UPDATE
ON orders
FOR EACH ROW
BEGIN
    IF NEW.amount > OLD.amount THEN
        INSERT INTO order_logs (order_id, action) VALUES (NEW.id, '金額が増加しました');
    ELSEIF NEW.amount < OLD.amount THEN
        INSERT INTO order_logs (order_id, action) VALUES (NEW.id, '金額が減少しました');
    END IF;
END;
  1. レコードの削除時にトリガーを使用する例

以下の例では、productsテーブルから商品が削除されると、deleted_productsテーブルに削除された商品の情報が追加されるトリガーを作成します。

CREATE TRIGGER delete_product_trigger
BEFORE DELETE
ON products
FOR EACH ROW
BEGIN
    INSERT INTO deleted_products (product_id, name, deleted_at) VALUES (OLD.id, OLD.name, NOW());
END;

これらはいくつかの基本的なMySQLトリガーの例です。トリガーはデータベースのイベントに応じて自動的に実行されるため、データの変更を監視し、必要な処理を行うための強力なツールです。