トリガーはOceanBaseデータベースが提供する機能であり、ストアドプロシージャや関数と同様に、宣言、実行、例外処理を含むPLブロックです。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
トリガーは特定のイベントに基づいて実行され、イベントの前または後にトリガーを発火させるか、またはトリガーが単一のイベントに対して発火するか、あるいはイベントの実行によって影響を受ける特定の行データに対して発火するかを指定できます。
トリガーは独立したオブジェクトであり、特定のイベントが発生すると自動的に暗黙的に実行されます。また、トリガーはパラメータを受け取ることができません。ここでいうイベントとは、データベースのテーブルに対するINSERT、UPDATE、およびDELETE操作を指します。
注意
OceanBaseデータベースV2.2.7xバージョンおよびそれ以前では、テーブル上の行レベルトリガーのみサポートされています。
シンプルなトリガーの発火タイミングには、以下の4種類があります:
イベントの実行前(ステートメントレベルの
BEFOREトリガー)イベントの実行後(ステートメントレベルの
AFTERトリガー)各行がイベントの実行によって影響を受ける前(行レベルの
BEFOREトリガー)各行がイベントの実行によって影響を受けた後(行レベルの
AFTERトリガー)
1つのDMLステートメントは複数のシンプルなトリガーを発火させる可能性があり、その実行順序は以下の通りです:ステートメントレベルBEFOREトリガー -> 行レベルBEFOREトリガー -> 行レベルAFTERトリガー -> ステートメントレベルAFTERトリガー。
同一タイプのトリガーの実行順序は不確定であり、現在トリガーの実行順序を指定することはサポートされていません。