- トリガーの作成と構文
トリガーを作成するには、以下のような構文を使用します。
CREATE TRIGGER トリガー名
BEFORE/AFTER イベント
ON テーブル名
FOR EACH ROW
BEGIN
-- トリガーの処理内容
END;
- レコードの挿入時にトリガーを使用する例
以下の例では、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;
- レコードの更新時にトリガーを使用する例
以下の例では、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;
- レコードの削除時にトリガーを使用する例
以下の例では、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トリガーの例です。トリガーはデータベースのイベントに応じて自動的に実行されるため、データの変更を監視し、必要な処理を行うための強力なツールです。