【SQL基礎】トリガーとは
「トリガー」の一般的な意味
トリガーとは銃の引き金のことです。
転じて「物事のきっかけ」という意味も持っています。
SQLにおける「トリガー」
SQLにおけるトリガーは、「あるSQLをきっかけとして実行されるSQL」のことです。
(きっかけとなるSQL自体を指すわけではないというのが、元々のトリガーの意味から考えると少しややこしいかもしれません。)
きっかけとなり得るSQLはINSERT,UPDATE,DELETEの3種類です。
トリガー実行のタイミングは、きっかけとなるSQLの前後で指定ができます。
トリガーはテーブルごとに設定できます。
例えば、「注文」テーブルにINSERTが実行されたとき「注文履歴」テーブルにINSERTを実行するという設定ができます。
「注文」テーブルへのINSERTがきっかけとなり、「注文履歴」テーブルへのINSERTが実行されます。
このトリガーは「注文」テーブルに対して設定します。
上記の例も該当しますが、トリガーにはログを残す等の用途があります。
トリガーの種類
トリガーは2種類存在します。
行単位のトリガー(FOR EACH ROW)と文単位のトリガー(FOR EACH STATEMENT)です。
例えば、1回のUPDATE文で2行のレコードが更新された場合、FOR EACH ROWだとトリガーは2回実行されます。
FOR EACH STATEMENTだとトリガーは1回実行されます。
MySQLでは行単位のトリガー(FOR EACH ROW)のみサポートしています。
トリガーの設定方法など、詳しい説明は次回の記事で扱います。
学習のポイント
・トリガーが設定できるのはINSERT,UPDATE,DELETEの3種類
・MySQLでは行単位のトリガー(FOR EACH ROW)のみサポート
練習問題
次のうち、MySQLのトリガーの設定として誤っているものを選んでください。
1.テーブルAにレコードを1件挿入したときに、テーブルBにログを1件残す設定。
2.テーブルAのレコードを2件更新したときに、テーブルBにログを1件残す設定。
3.テーブルAのレコードを3件抽出したときに、テーブルBにログを3件残す設定。
4.テーブルAのレコードを4件削除したときに、テーブルBにログを4件残す設定。