【MySQL】トリガーを作成・削除するSQL


ここではMySQLでトリガー(trigger)を作成・削除する方法を紹介します。

トリガーとは

トリガーとは、あるテーブルに対して操作(登録・更新・削除)が行われたときに、特定の処理を実行するプログラムです。

例えば、社員マスタに変更があったときに、変更の履歴を別のテーブルに記録することが出来ます。他にもAという表に変更があったときに、Bという表も同時に変更するといった使い方が出来ます。

ただし、バックグラウンドで実行されるので、トリガーを多用するとどんな処理が実行されているのか分からなくなることがあります。そのためトリガーの利用を避けているシステムもあります。

トリガーを作成するSQL

トリガーの作成はCREATE TARIGGER文を使います。

CREATE TRIGGER トリガー名
[BEFORE | AFTER] [INSERT | UPDATE | DELETE] 
ON テーブル名 FOR EACH ROW
トリガーの処理内容
;

・[BEFORE | AFTER | INSTEAD OF]でトリガーの起動タイミングを指定します。
 BEFORE:表に対する操作が行われる前にトリガーを実行
 AFTER:表に対する操作が終わった後にトリガーを実行

・[INSERT | UPDATE | DELETE]
 どのDML文を実行したときにトリガーの処理を実行するか指定します。

CREATE TRIGGER文のSQLサンプル

CREATE TRIGGERのSQLサンプルを紹介します。

次のTRIGGERでは、TAB1テーブルのレコードが更新されたとき、TAB2テーブルへレコードをINSERTしています。

CREATE TRIGGER trg1
AFTER UPDATE ON tab1
FOR EACH ROW
BEGIN
 INSERT INTO tab2 values('tab1','UPDATE',sysdate);
END;

トリガーを削除するSQL

トリガーを削除するにはDROP TRIGGER文を使います。

DROP TRIGGER [IF EXISTS] トリガー名;

次のSQLでは、trg1を削除しています。

DROP TRIGGER trg1;