デフォルト処理を補完するオブジェクトレベル・トリガーの定義
トリガーは、標準オブジェクトまたはカスタム・オブジェクトのデフォルト処理ロジックを補完するために記述できるスクリプトです。 オブジェクト・レベルとフィールド・レベルの両方でトリガーを定義できます。
使用可能なオブジェクト・レベルのトリガーを次に示します。 使用可能なフィールドレベル・トリガーの値変更に対応するためのフィールドレベル・トリガーの定義を参照してください。
-
作成後:
オブジェクトの新しいインスタンスが作成されたときに起動します。 プログラム的なデフォルト値をオブジェクトの1つ以上のフィールドに割り当てる場合に使用します。
-
Before Invalidate
子行の作成、削除または変更時、または変更されていない行の最初の永続フィールドが変更されたときに、有効な親オブジェクトに対して起動します。
-
削除前
オブジェクトを削除しようとしたときに起動します。 falseを返すと、行が削除されなくなり、オプションのトリガー・エラー・メッセージが表示されます。
-
データベースでの挿入の前
新しいオブジェクトがデータベースに挿入される前に起動します。
-
データベースでの更新の前
既存のオブジェクトがデータベースで変更される前に起動
-
データベースでの削除の前
既存のオブジェクトがデータベースから削除される前に起動
-
データベースへの変更のポストの後
すべての変更がデータベースにポストされた後、永続的にコミットされる前に起動します。 現在のトランザクションの一部として保存される追加の変更に使用できます。
-
データベースのコミット前
現在のオブジェクトに対する保留中の変更(挿入、更新、削除)が現在のトランザクションで永続化される前に実行されます。 このトリガーで加えられた変更は、現在のトランザクションには含まれません。 トリガーで変更が必要な場合は、「データベースへの変更後」トリガーを使用します。
-
データベースでのロールバックの前
現在のオブジェクト(挿入、更新、削除)の変更がロールバックされる前に起動
-
データベースでのロールバック後
現在のオブジェクトに対する保留中の変更(挿入、更新、削除)がロールバックされた後に起動
たとえば、トラブル・チケットが作成または変更されるたびに更新する必要があるOpenTroubleTickets
フィールドを含むContact
オブジェクトを考えてみます。 前述のupdateOpenTroubleTicketCount()
オブジェクト関数を呼び出すTroubleTicket
オブジェクトに対して、次のトリガーを作成できます。
-
トリガー・オブジェクト:
TroubleTicket
-
トリガー: 変更がデータベースに転記された後
-
トリガー名:
After_Changes_Set_Open_Trouble_Tickets
トリガー定義
adf.util.logStart('After_Changes_Set_Open_Trouble_Tickets')
// Get the related contact for this trouble ticket
def relatedContact = Contact_Obj_c
// Update its OpenTroubleTickets field value
relatedContact?.updateOpenTroubleTicketCount()