OceanBaseデータベースのMySQLモードは、MySQL 5.6と互換性のあるトリガーをサポートしています。トリガーはテーブルに関連付けられたデータベースオブジェクトであり、テーブルで特定のイベントが発生したときにアクティブ化されます。
トリガーは、関連するテーブルの行に対する挿入、更新、または削除のステートメント実行時にアクティブ化されます。例えば、INSERT または LOAD DATA ステートメントで行を挿入すると、各行の挿入ごとに INSERT トリガーが1回ずつアクティブ化されます。2行のデータを一括挿入すると、トリガーは2回実行されます。
トリガーは、イベントの前または後にアクティブ化されるよう設定できます。例えば、テーブルの各行を挿入する前、または更新される各行の後にトリガーをアクティブ化することができます。
OceanBaseデータベースのMySQLモードは、現在主に以下の種類のトリガーをサポートしています:
INSERTトリガー:特定の行が挿入されたときにトリガーがアクティブ化されることを示します。INSERT、LOAD DATA、REPLACEステートメントによってトリガーを実行できます。UPDATEトリガー:特定の行が変更されたときにトリガーがアクティブ化されることを示します。UPDATEステートメントによってトリガーを実行できます。DELETEトリガー:特定の行が削除されたときにトリガーがアクティブ化されることを示します。DELETE、REPLACEステートメントによってトリガーを実行できます。
特別なケースとして、INSERT INTO ... ON DUPLICATE KEY UPDATE ステートメントがあります。各行に対して BEFORE INSERT トリガーが1回、その後 AFTER INSERT トリガー、または BEFORE UPDATE と AFTER UPDATE のトリガーが順に実行されます。AFTER INSERT トリガーが実行されるか、BEFORE UPDATE と AFTER UPDATE のトリガーが実行されるかは、行に重複キーが存在するかどうかによって決まります。