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