« パートナーポータル有効後のロールの指定方法 | メイン | SOQLインジェクションとXSSへの対策方法 »

2011年4月12日 (火)

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

beforeトリガafterトリガの特徴をまとめてみました。

○beforeトリガ
レコードがDBに保存される前に起動されます。
レコードがDBに保存される前のため、Trigger.newを直接変更することができます
(before insert、before updateトリガ)。

○afterトリガ
レコードがDBに保存された後に起動されます。
但し、まだコミットはされていません(重要)。

DBに保存された後のため、
・Id
・自動採番
・作成者
・作成日時
・更新者
・更新日時
などのDBで設定された項目の値にアクセスできます

DBに保存された後のため、Trigger.newを直接変更することはできませんが、
DML操作で元レコードの更新・削除を行うことができます
(after insert、after updateトリガ)。

○実行順序
beforeトリガ、afterトリガ、必須、入力規則のチェックは、
↓の順番で実行されます。

1. beforeトリガ
2. 必須、入力規則のチェック
3. afterトリガ

○使い分け

開発時には、
・入力規則のチェックより前に実施したい場合には、beforeトリガを使う
・DBで設定された値にアクセスしたい場合には、afterトリガを使う
など、両者の特徴を生かして、使い分けると良いと思います。

最後に、特徴をまとめた表を載せておきます。

beforeトリガ afterトリガ
起動タイミング レコードがDBに保存される前 レコードがDBに保存された後
DBで設定する項目へのアクセス 不可
Trigger.newの項目の値の変更 可 ※1 不可 ※2
元レコードのDML操作(更新・削除) 不可 ※1 可 ※2
実行順序 必須、入力規則のチェックの前 必須、入力規則のチェックの後

※1 before insert、before updateの場合
※2 after insert、after updateの場合

コメント

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。

採用情報

株式会社フレクトでは、事業拡大のため、
・Salesforce/Force.comのアプリケーション開発
・HerokuやAWSなどのクラウドプラットフォーム上
でのWebアプリケーション開発
エンジニア、マネージャーを募集中です。

未経験でも、これからクラウドをやってみたい方、
是非ご応募下さい。

フレクト採用ページへ

会社紹介

  • 株式会社フレクトは、
      ・認定コンサルタント
      ・認定上級デベロッパー
      ・認定デベロッパー
    が在籍している、セールスフォースパートナーです。
    また、heroku partnersにも登録されています。
    herokuパートナー
    株式会社フレクト
    Salesforce/Force.com
    導入支援サービス
    弊社の認定プロフェッショナルが支援致します。
    ・Visualforce/Apexによるアプリ開発
    ・Salesforceと連携するWebアプリ開発
    も承っております。
    セールスフォースご検討の際は、
    お気軽にお問合せください。

Twitter

リファレンス

■Developer's Guide(リファレンス)
・Apex  HTML | PDF | 日本語PDF | ガバナ制限
・Visualforce  HTML | PDF
・Web Services API  HTML | PDF | 日本語PDF
・Bulk API  HTML | PDF
・REST API  HTML | PDF | 日本語PDF
・Metadata API  HTML | PDF
・Migration Tool  HTML | PDF
・AJAX Toolkit  HTML | PDF
・Data Loader PDF | 日本語PDF

■早見表 (日本語)
数式
Apex
Visualforce
Web Services API
Chatter