Salesforce レコード保存時の実行順序(Order of Execution)図解
このページには広告リンクを含みます。
保存時の実行順序の全体像:押さえる7地点
実行順序は、ページの保存ボタンでも API でも Apex の DML でも、レコードが保存されるたびに同じ考え方で進みます。全部を暗記するより、まず7地点を覚えるのが近道です。

ポイントは「保存」と「コミット」が別だということです。ステップ7で保存されても、ステップ19のコミットまでは確定しません。途中で失敗すれば、全部が取り消されます。
次の表は、公式の手順を日本語で要約したものです。手順の番号は Winter ’27(API バージョン 68.0)の版で確認した内容です。版によって変わる場合があり、たとえば API 53.0 以前では保存後フローはエンタイトルメントルールの後に動きます。細部は公式で確かめてください。
| 手順 | 動くもの | 設計で考えること |
|---|---|---|
| 1 | 元のレコードの読み込み | |
| 2 | 新しい値の読み込みと最初のシステム検証 | ユーザーの標準の編集画面と、商談商品などの明細の一括作成では、ここでもカスタムの入力規則が動く |
| 3 | 保存前のレコードトリガーフロー | 自分の項目の更新はここ |
| 4 | before トリガー | 保存前フローが入れた値が見える |
| 5 | システム検証の再実行とカスタムの入力規則 | 3と4の値も検査される |
| 6 | 重複ルール | ブロックならここで終わり |
| 7 | 保存(コミットはまだ) | |
| 8 | after トリガー | |
| 9 | 割り当てルール | |
| 10 | 自動応答ルール | |
| 11 | ワークフロールール | 項目更新があると、トリガーがもう1回動く |
| 12 | エスカレーションルール | |
| 13 | Process Builder、ワークフローから起動したフロー | この中の順序は保証されない |
| 14 | 保存後のレコードトリガーフロー | 他のレコードの更新はここ |
| 15 | エンタイトルメントルール | |
| 16 | 親レコードの積み上げ集計 | 親にも保存の手順が動く |
| 17 | 祖父母レコードの積み上げ集計 | 同上 |
| 18 | 条件ベースの共有の評価 | |
| 19 | コミット | ここで確定する |
| 20 | コミット後の処理(メール、非同期 Apex、非同期パス) | 失敗時には動かない |
入力規則はいつ動く?値が入っている前提を確かめる
入力規則(ステップ5)の前に動くのは、保存前フローと before トリガーです。この順序から、設計の判断が決まります。
- 保存前フローが入れた値は、入力規則の判定対象になる
- 保存後フローや after トリガーの更新は、1回目の入力規則には間に合わない
- 保存後フローが同じレコードを更新すると、その更新に対してまた入力規則が動く
冒頭の値引率の問題は、このどれかに当たります。自動で入れる値が入力規則の前提なら、保存前フローにします。逆に、値を自動で入れる処理が入力規則に落とされることもあります。自動化の更新も、入力規則の対象からは外れません。
重複ルールは入力規則の次(ステップ6)です。ブロックの設定で重複と判定されると、レコードは保存されず、after トリガーやワークフローなど後の手順は動きません。「重複でエラーになったのに、フローの通知メールが飛んだ」ということは起きない仕組みです。
保存前フローと保存後フローはどちらを使う?
判断の基準は、触るのが自分の項目か、他のレコードかです。同じレコードの項目更新を保存後で行うと、2回目の保存が走ります。

| 比べる点 | 保存前フロー(高速項目更新) | 保存後フロー(アクションと関連レコード) |
|---|---|---|
| 手順 | 3 | 14 |
| 入力規則との関係 | 入力規則の前 | 入力規則の後 |
| 同じレコードの更新 | 追加の DML なし | DML が増え、2回目の保存が走る |
| 他のレコードの更新 | できない | できる |
| メールなどのアクション | できない | できる |
| サブフロー | 呼べない | 呼べる |
Salesforce のヘルプは、保存前の更新なら再保存を省け、割り当てルールやワークフローなどをもう一度動かさずに済むと説明しています。判断ガイドも、項目だけを変えるなら保存前を使うよう勧めています。呼び出し可能な Apex は保存前では使えないため、保存前で済ませたいときは Flow の標準の要素か before トリガーで作ります。
順番が決まっていない場所
順序が保証されない場所も、知っておくべき点です。
- 同じイベントの複数の Apex トリガー:同じオブジェクト・同じイベントに複数のトリガーがあると、順番は保証されません。判断ガイドは1オブジェクト1トリガーを勧めています。
- Process Builder とワークフローから起動したフロー(ステップ13):順序は保証されません。順番を決めたいならレコードトリガーフローに移します。
- 同じ種類のレコードトリガーフロー:トリガー順序の値(1〜2,000)で並べられます。
トリガー順序の値には限界があります。保存後フロー同士の順番は変えられますが、保存後フローを before トリガーや保存前フローより先に動かすことはできません。
保存がもう一度動くケースと、親レコードへの波及
実行順序で見落としやすいのが、1回の保存から別の保存が生まれる場面です。
| 場面 | 何が起きるか | 注意点 |
|---|---|---|
| ワークフローの項目更新 | レコードを再更新。システム検証をやり直し、before・after update トリガーがもう1回だけ動く | カスタムの入力規則、フロー、重複ルール、Process Builder、エスカレーションは再実行されない |
| 再帰保存 | 手順9〜17は飛ばされる | 割り当てルールから積み上げ集計までは繰り返されない |
| 積み上げ集計 | 親レコードにも保存の手順が動く | 親の自動化も同じトランザクションの枠を使う |
| 保存後フローの同じレコード更新 | 新しい DML が走り、レコードが保存の手順を通る | エントリー条件で変化時に限定する |
公式の資料は、2回目の保存の範囲を少し違う言い方で説明しています。判断ガイドは保存の順序全体がもう一度動くと書き、Apex 開発者ガイドは再帰保存では手順9〜17を飛ばすと書いています。保存後フローの更新で手順ごとに何が動くかは、どちらの資料にも一覧がありません。入力規則(手順5)は飛ばす範囲の外で、ヘルプもレコードトリガーフローはカスタムの入力規則を動かすと書いているので、動く前提で設計します。ほかの手順はデバッグログで確かめてください。
子の保存で親の積み上げ集計項目が更新されると、親のフローやトリガーも動きます。大量の子を保存したときに「親の側の処理」でガバナ制限に当たることがあるのは、このためです。枠の数え方はループ内DMLの記事で説明しています。
再帰の止め方として、判断ガイドは静的なフラグより、対象の項目が変わったときだけ動かす方法を勧めています。Apex なら Trigger.new と Trigger.oldMap の比較、フローならエントリー条件で $Record と $RecordPrior を比べます。
コミット後の処理と失敗時の動き
メール送信、非同期 Apex、レコードトリガーフローの非同期パスは、コミットの後(ステップ20)に動きます。これには2つの意味があります。
- 途中で失敗すれば、これらは動かない。コミット後に送るメールも送られない
- 非同期パスは元の保存と別に動くので、失敗しても元の保存は取り消されない
外部システムへの要求を非同期パスで送るのは、この性質を使ったものです。プラットフォームイベントはこの点で性質が違います。詳しくは外部システムとの連携パターンにまとめました。
関連記事
- Salesforce フローの種類と選び方:高速項目更新とアクションと関連レコードの選び方
- ループ内DMLの直し方:同じトランザクションの枠をどう節約するか
- Platform App Builder の勉強法:自動化の範囲を学ぶ順序
- 認定資格のロードマップ:学習の全体像
よくある質問
- Salesforce の保存時の実行順序で、入力規則はいつ動きますか?
- カスタムの入力規則は、保存前フローと before トリガーの後、レコードの保存の前に動きます。そのため保存前フローが入れた値は入力規則の判定対象になります。
- 保存前フローと Apex の before トリガーはどちらが先ですか?
- 保存前のレコードトリガーフローが先です。公式の順序では保存前フローがステップ3、before トリガーがステップ4で、その後に入力規則が続きます。
- 保存後フローは after トリガーより先に動かせますか?
- 動かせません。トリガー順序の値で調整できるのは同じ種類のフローの中の順番だけで、保存後フローを before トリガーや after トリガーより前に動かすことはできません。
- 実行順序は全部覚える必要がありますか?
- 全部を暗記する必要はありません。保存前フロー、before トリガー、入力規則、after トリガー、保存後フロー、積み上げ集計、コミットの7地点を押さえ、細かい手順は公式の Triggers and Order of Execution で確かめます。