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 トリガーがアクティブ化され、その後 AFTER INSERT トリガー、または BEFORE UPDATE と AFTER UPDATE の両方のトリガーがアクティブ化されます。AFTER INSERT トリガーが実行されるか、BEFORE UPDATE と AFTER UPDATE の両方のトリガーが実行されるかは、行に重複キーが存在するかどうかによって決まります。