Oracle と互換性のある PolarDB データベースは、行レベルと文レベルの両方のトリガーをサポートしています。 行レベルのトリガーは、トリガーイベントによって影響を受ける行ごとに、一度実行されます。 たとえば、テーブルのトリガーイベントとして削除が定義され、単一の DELETE 文が実行されてテーブルから 5 つの行が削除された場合、トリガーは、各行に対して 1 回ずつ、5 回起動されます。

対照的に、文レベルのトリガーは、トリガーイベントの影響を受ける行数に関係なく、トリガーを起動する文ごとに一度起動されます。 前の例では、単一の DELETE 文により 5 つの行が削除されると、文レベルのトリガーが一度だけ起動されます。

文レベルのトリガーの場合、アクションの順序を定義できます。 ここでいう順序は、トリガーコードブロックがトリガーを起動する文自体の前または後に実行されるかどうかを指します。 行レベルのトリガーの場合、トリガーを起動する文の影響を受ける各行の前または後です。

行レベルの BEFORE トリガーでは、影響を受ける各行でトリガーアクションが実行される前に、トリガーコードブロックが実行されます。 文レベルの BEFORE トリガーでは、トリガーを起動する文が実行される前に、トリガーコードブロックが実行されます。

行レベルの AFTER トリガーでは、影響を受ける各行でトリガーアクションが実行された後に、トリガーコードブロックが実行されます。 文レベルの AFTER トリガーでは、トリガーを起動する文が実行された後に、トリガーコードブロックが実行されます。