トリガ関数内でSQLコマンドを実行し、このコマンドがトリガの元となったテーブルにアクセスする場合、データの可視性規則に注意する必要があります。 この規則が、SQLコマンドがトリガの発行原因となったデータ変更を見ることができるかどうかを決定するからです。 簡単に以下に示します。
トリガの発生原因となったデータ変更(挿入、更新、削除)は、当然、BEFOREトリガ内のSQLコマンドでは、まだ発生していませんので、可視ではありません。
しかし、BEFOREトリガで実行されるSQLコマンドは、その外側のコマンドで以前に処理された行へのデータ変更の影響を見ることになるでしょう。 これらの変更イベントの順序は一般的に予測できませんので、注意が必要です。 複数行に影響するSQLコマンドはどのような順番でもその行を更新することができます。
AFTERトリガが発生すると、その外側のコマンドによってなされたすべての変更は既に完了しています。 実行済みのSQLコマンドは可視になります。