MENU
Abo
某SIer勤務。
新卒文系からエンジニア就職。
日々の学びをつらつらと書いています。
保有資格:
Salesforce認定アドミニストレーター  
Salesforce認定Platformデベロッパー
Salesforce認定上級Platformデベロッパー
カテゴリー
アーカイブ

【Apex】 beforeトリガとafterトリガの違いが分かる!【Salesforce】

今回は「beforeトリガとafterトリガの違い」についてです。

いつまでってもなかなか頭に残ってくれない、、、

その都度調べるのもありだとは思いますが、いい加減頭にしっかり刻みこみたい。ということで両者の違いと、その他補足事項をまとめました。

そもそもトリガってなーに?っていう人はこちらも参考人してみてください。

目次

beforeトリガとafterトリガの違い

beforeトリガとafterトリガの違いは端的に言うと、下記のようになります。

  • beforeトリガ:レコードがDBに保存される前に起動
  • afterトリガ:レコードがDBに保存される後に起動(※コミットはまだされていない)

beforeトリガは、レコードがDBに保存される前なので、「trigger.new」を直接変更することが可能です。

afterトリガは、レコードがDBに保存された後に起動するので、「作成者」や「最終更新日時」などのシステムによって設定される値を利用することができます

ちなみにDBに保存はされているけどコミットがされていないというのは、DBに対して行われたinsertやupdateなどの更新処理が、まだ確定していないことを意味します。

スクロールできます
起動タイミングtrigger.newの項目値の変更システム情報(Idや作成日時)の使用
beforeトリガDBに保存される前〇(before insert、before updateの場合)×
afterトリガDBに保存された後×

トリガの起動タイミング

トリガの起動タイミングには以下のようなパターンがあります。

  1. before insert
  2. before update
  3. before delete
  4. after insert
  5. after update
  6. after delete
  7. after undelete

例えば、「before insert」の場合、対象のオブジェクトのレコードがinsertされ、DBに保存される前にトリガが起動することになります。

「undelete」は、ごみ箱からのレコードの復元なので、afterしかありませんね。
あまり使ったことはないですが、頭の片隅に入れておきます。

トリガの実行順序

Salesforce内には、トリガだけでなく、ワークフローやプロセスビルダー、入力規則などの自動で処理を実行するような機能が多く備わっています。

そして、それらの機能には処理が実行される順番があり、その順番をある程度理解して開発を進めていかないと、思うようにシステムが動いてくれなかったりするわけです。

以下、開発でよく使用しそうな自動化プロセスの順序になっているので参考にしてみてください。

  1. beforeトリガ
  2. 入力規則
  3. 重複ルール
  4. レコードの保存(コミットはまだだよ)
  5. afterトリガ
  6. ワークフロールール
  7. プロセスビルダー
  8. 積み上げ集計
  9. 条件に基づく共有の評価の実行
  10. DBのコミット

beforeトリガとafterトリガの使い分け

さて、ここまで「beforeトリガ」と「afterトリガ」の違いや、起動タイミングについてお伝えしてきましたが、結局どんな時にどっちを使えばいいの?って話ですよね。

いろいろ考えはあるとは思いますが、こんな感じ(↓)に押さえておけば問題ないかなと思います。

beforeトリガとafterトリガの使い分け
  • insert/updateされたレコードを、DBに保存される前に操作したい
    もしくは、入力規則のチェックより前に処理を実行したい → 「beforeトリガ」
  • DBに保存された後のレコードにアクセスしたい → 「afterトリガ」

まとめ

今回は「beforeトリガとafterトリガの違い」についてお伝えしました。

それぞれの違いだけでなく、自動化処理の実行順序も頭に入れておくと開発が少しは楽になりそうですね。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某SIer勤務。
新卒文系からエンジニア就職。
日々の学びをつらつらと書いています。
保有資格:Salesforce認定アドミニストレーター
     Salesforce認定Platformデベロッパー
     Salesforce認定上級Platformデベロッパー

コメント

コメントする

CAPTCHA


目次