こんにちは、管理人の@Salesforce.Zです。
プログラムを書くなら、処理順番をキッチリ制御できると素晴らしいですね。
今日から、あなたもこうなれます。そして、処理を明確にできることは上司にも好かれるので、上昇にもつながる、信頼感も得やすい。無視できない知識です。 しっかり理解しましょう。
処理順番をしっかり設定でき、バグ確認時にも役に立ちます。なかなか重要な知識です。
一緒に見ていきましょう。
目次
自動化ルール、および、Apex トリガーの処理順番
レコードに適用される salesforce ロジックの順序です。
1.古いレコードをデータベースからロード(または、新しい挿入の初期化)
2.新しいレコードの値で古い値を上書き
3.システムの入力規則(商談商品を挿入する場合、システムの入力規則に加えてカスタム入力規則が実行されます)
4.すべての before トリガを実行(EE / UE のみ)
5.カスタム入力規則
6.レコードをデータベースに保存(しかし、コミットされていない)
7.レコードをデータベースから再ロード
8.すべての after トリガを実行(EE / UE のみ)
9.割り当てルール
10.自動応答ルール
11.ワークフロー ルール
12.プロセス
13.エスカレーション ルール
14.積み上げ集計数式の値の更新(存在する場合)
15.データベースのコミット
16.コミット後のロジック(メールの送信)
Trigger
Apex トリガを使用すると、Salesforce のレコードに対するイベント (挿入、更新、削除) の前または後にカスタムアクションを実行できます。
トリガ構文
トリガ定義の構文は、クラス定義の構文とは異なります。トリガ定義は、trigger キーワードで開始します
trigger TriggerName on ObjectName (trigger_events) { code_block }
トリガイベントは下記のようなアクションになります。
before insert
before update
before delete
after insert
after update
after delete
after undelete
トリガ例(取引先)
trigger HelloWorldTrigger on Account (before insert) { System.debug('Hello World!'); }
Before Trigger
レコードがデータベースに保存される前にレコードの値を更新または検証する場合に使用します
After Trigger
システムによって設定された項目値 (レコードの Id 項目や LastModifiedDate 項目など) にアクセスする場合や、他のレコードの変更に影響を与える場合に使用します。after トリガを実行するレコードは参照のみです。
終わりに
Beforeはデータベースに保存することをタイミングにして、以前のこと
文章の冒頭に記載している処理順番の#6を基準に前、後の定義です。
Afterはデータベースに保存することをタイミングにして、以降のこと
知恵袋:参照関係の親子レコードでは、親を削除しても子オブジェクトのトリガが動かないです。