[Oracle]トリガーの実行順序を設定する方法
2015/12/14
FOLLOWS句を使用して実行順序を設定する
1つの表に対して同レベル(タイミング)のトリガーを複数作成することはできますが、実行順序は保証されていません。
実行順序に依存するようなトリガーを作成する場合は、FOLLOWS句を使用して実行順序を設定します。
トリガーの作成方法については、過去記事を参照してください。
トリガーの実行順序
タイミングが異なる2つ以上のトリガーを1つの表の作成した場合、トリガーは次の順序で実行されます。
1 2 3 4 |
BEFORE STATEMENTトリガー(BEFORE 文トリガー) BEFORE EACH ROWトリガー (BEFORE 行トリガー) AFTER EACH ROWトリガー (AFTER 行トリガー) AFTER STATEMENTトリガー(AFTER 文トリガー) |
ここに、タイミングの同じBEFORE 行トリガーを追加作成した場合、トリガーはどちらかの順序で実行されます。
1 2 3 4 5 |
BEFORE STATEMENTトリガー(BEFORE 文トリガー) BEFORE EACH ROWトリガー (BEFORE 行トリガー) BEFORE EACH ROWトリガー (BEFORE 行トリガー) 追加分 AFTER EACH ROWトリガー (AFTER 行トリガー) AFTER STATEMENTトリガー(AFTER 文トリガー) |
または、
1 2 3 4 5 |
BEFORE STATEMENTトリガー(BEFORE 文トリガー) BEFORE EACH ROWトリガー (BEFORE 行トリガー) 追加分 BEFORE EACH ROWトリガー (BEFORE 行トリガー) AFTER EACH ROWトリガー (AFTER 行トリガー) AFTER STATEMENTトリガー(AFTER 文トリガー) |
FOLLOWS句で実行順序を設定
トリガー作成時にFOLLOWS句を使用すると、指定した既存トリガーの後に起動するトリガーを作成することができます。
1 2 3 4 |
CREATE [OR REPLACE] TRIGGER 作成トリガー名 AFTER UPDATE ON 表名 FOR EACH ROW FOLLOWS 既存トリガー名 |
Google AdSense PC
Google AdSense PC
関連記事
-
-
[Oracle]データベーストリガーの作成方法
DMLトリガーを作成する データベーストリガーの中でももっとも一般的なDMLトリガーの作成方法と簡単な使用方法を記載していきます。 トリガーとは? トリガーとは …
-
-
[SQL Server]クロス集計の方法
PIVOTを使ってクロス集計する SQL ServerでExcelのピボットテーブルのようなクロス集計をするには、PIVOT関係演算子を使って集計することができ …
-
-
[SQLServer]日付文字列 + 時刻文字列をDATETIME型に変換する方法
SQLServerで日付文字列 + 時刻文字列をDATETIME型に変換する方法 日付と時刻を別のカラムに格納している場合に日時データとして扱いたい場合はCON …
-
-
[Oracle]ジョブをスケジューリングして定期実行する方法
DBMS_SCHEDULERパッケージを使用したジョブスケジューリング Oracleでジョブを定期実行するには、DBMS_SCHEDULERパッケージやDBMS …
-
-
Oracleで文字列を全角大文字に変換する(ひらがな・カタカナの小文字(捨て仮名)対応)
Oracleの文字列検索で全角半角、大文字小文字、ひらがなカタカナを区別しないであいまい検索する場合は比較対象の文字列形式を統一する必要があります。 文字列形式 …
-
-
[SQL Server]IDENTITYの値を初期化する
ID値の初期化(リセット)方法 IDENTITYプロパティを設定した列のID値を初期化(リセット)する方法を記載します。 現在のID値を確認する ID値を確認す …
-
-
[SQL Server]データを期間別に集計する
SQL Serverで集計表を出力 日付をDATETIME型で管理している場合、CONVERT関数、DATEPART関数を使って、日、週、月、年別の集計結果を出 …
-
-
[Oracle]Oracle Clientのアンインストール方法
Oracle Clientをレジストリを含め完全に削除することがありましたので、この記事では削除手順を記載します。 削除手順ではレジストリを変更し …
-
-
ODP.NETをNuGetからインストールする
ODP.NETのインストール手順 Oracle 12cから公式のODP.NETがNuGetに追加されました。 この記事ではODP.NETをNuGetからインスト …
-
-
[SQL Server]除算時の注意点
SQLServerで除算結果が小数になる場合 たとえば、1100グラムをキロに換算する場合は「1100 / 1000」で計算すれば「1.1kg」と求められるが …