OceanBaseデータベースのMySQLモードは、MySQL 5.6のトリガーと互換性があります。トリガーはテーブルに関連付けられたデータベースオブジェクトであり、テーブルで特定のイベントが発生したときにアクティブ化されます。
トリガーは、関連するテーブルの行への挿入、更新、または削除の際にアクティブ化されることがあります。例えば、INSERT または LOAD DATA ステートメントを使用して行を挿入すると、挿入されるたびに INSERT トリガーが一度アクティブ化されます。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 のトリガーかは、行に重複キーが存在するかどうかによって決まります。