トリガーとは、テーブルに関連付けられ、そのテーブルに対して特定のイベントが発生するとアクティブ化される名前付きデータベースオブジェクトのことです。トリガーを使用する場合には、テーブルに挿入する値のチェックを実行したり、更新にかかわる値の計算を実行したりする場合があります。
トリガーは、関連付けられたテーブルでステートメントが行の挿入、更新、または削除を行なったときにアクティブ化するように定義されます。これらの行操作がトリガーイベントになります。たとえば、行は、INSERT
または LOAD DATA
ステートメントで挿入でき、挿入トリガーは挿入された行ごとにアクティブ化します。トリガーは、トリガーイベントの前または後のどちらかでアクティブ化するように設定できます。たとえば、テーブルに挿入される各行の前、または更新される各行のあとでトリガーをアクティブ化させることができます。
MySQL のトリガーは、SQL ステートメントがテーブルに対して行なった変更の場合にのみアクティブ化します。ビューでの変更や、SQL ステートメントを MySQL Server に転送しない API がテーブルに対して行なった変更ではアクティブ化しません。これは次のことを意味します。
INFORMATION_SCHEMA
またはperformance_schema
テーブルは実際にはビューなので、トリガーは、これらのテーブルでの変更ではアクティブ化されません。トリガーは、
NDB
API を使用して行われた更新によってアクティブ化されません。
次のセクションでは、トリガーを作成および削除するための構文について説明し、使用方法の例をいくつか挙げ、トリガーメタデータを取得する方法を示します。
追加のリソース
トリガーを扱うときには、トリガーユーザーフォーラムが役立ちます。
MySQL でのトリガーに関するよくある質問とその回答については、セクションA.5「MySQL 5.6 FAQ: トリガー」を参照してください。
トリガーの使用にはいくつかの制限があります。セクションD.1「ストアドプログラムの制約」を参照してください。
トリガーのバイナリロギングは、セクション20.7「ストアドプログラムのバイナリロギング」で説明しているように行います。