Salesforce ApexのTrigger.newの役割と使い方を紹介
IT・技術関連
更新日:2024.09.05


Salesforce ApexのTrigger.newとは
Trigger.newは、Salesforce ApexのTrigger クラスに含まれるトリガコンテキスト変数のひとつです。Apexでは、Trigger クラスを使用してトリガのランタイムコンテキスト情報にアクセスします。
Salesforce Apexにおけるトリガとは

Salesforce Apexトリガの種類
Salesforce Apexトリガには、beforeトリガとafterトリガの2種類があります。Trigger.newは、どのトリガにおいても使用できます。 beforeトリガ レコードがデータベースに保存される前に、レコードの値を更新もしくは検証できます。 afterトリガ 他のレコードの変更に影響を及ぼす場合に使用します。afterトリガの対象となるレコードは参照のみです。 例) ・レコードのIDやLastModifiedDate項目などのシステムが設定した項目値へのアクセス ・監査テーブルへのログイン、キューを使用した非同期イベントの実行Salesforce Apexトリガのランタイムエラー
Salesforce Apexトリガを使用して以下の操作を実行すると、直接操作、間接操作のいずれの場合も、ランタイムエラーが発生します。 ・beforeトリガでのレコード更新もしくは削除 ・afterトリガでのレコード削除Salesforce ApexにおけるTrigger.newの機能と留意点

Trigger.newの機能
Trigger.newは、登録、更新、削除を実行した後のバージョンのsObjectレコードのリストを返します。 Trigger.newで取得したsObjectリストを使用できるのは、 insertトリガ、updateトリガ、undeleteトリガです。また、beforeトリガでのみレコードを変更できます。 Trigger.newの反復処理を行うことで、個々のsObjectを取得できます。Trigger.newを使用する際の留意点
Salesforce Apexで、Trigger.newを使用する際の留意点を説明します。 Trigger.newは、Apex DML操作では使用できません。Trigger.oldも同様です。その他にTrigger.newを使用する際は、以下の点について注意しなければなりません。 ・Trigger.newを使用してオブジェクトの項目値を変更できるのは、beforeトリガのみです。 ・afterトリガで実行する際、例外的に保存されないケースがあります。 ・Trigger.newの削除はできません。Trigger.newを使用した項目の変更
Trigger.newを使用した項目は、トリガイベントによって変更できない場合があります。 before insertトリガ、before updateトリガでは変更できますが、after insertトリガ、after undeleteトリガでは変更できず、Trigger.newを保存しているため、ランタイムエラーが発生します。また、Trigger.newは、before deleteトリガ、after deleteトリガでは使用できません。Salesforce ApexのTrigger.newの使い方

使用例① Trigger.newにより、SalesforceのsObjectを取得する
Trigger.newを使用して、sObjectリストを取得するシンプルなトリガです。for ループを使用して反復処理でき、SOQLクエリのIN句を用いて、バインド変数としても使用できます。 変数の例として、Sample、Sample a、A、B、SampleIdを使用しています。Trigger.new のサンプルコード
以下がTrigger.new のサンプルコードです。Trigger simpleTrigger on Sample (after insert) {
for (Sample a : Trigger.new) {
// Iterate over each sObject
}
// This single query finds every contact that is associated with any of the
// triggering accounts. Note that although Trigger.new is a collection of
// records, when used as a bind variable in a SOQL query, Apex automatically
// transforms the list of records into a list of corresponding Ids.
Contact[] cons = [SELECT A FROM B
WHERE SampleId IN :Trigger.new];
}
使用例② Trigger.newとTrigger.oldで更新前後の値を比較する
Trigger.newとTrigger.oldを組み合わせた使用例を紹介します。項目の自動更新を行うワークフローを作成し、その結果をデバッグログとして表示します。 ここでは 、[説明] 項目などの更新を実行するオブジェクト作成のワークフローを例にします。trigger.oldにより、変更された項目を取得することを前提としています。 トリガは、ワークフローが更新されると起動し、反復処理により変更された [説明] 項目を取得します。このトリガで取得する項目を、別の方法で取得するには、ワークフローが実行された後でデータベースをクエリしなければなりません。 <処理の流れ> ①ワークフローの更新により項目値が変更されます。 ② trigger.oldとtrigger.newを使用して、レコードの該当する項目の新旧バージョン(更新前、更新後)の値を比較します。 ③それに応じて必要なビジネスロジックを実行します。Trigger.newとTrigger.old のサンプルコード
以下がTrigger.newとTrigger.old のサンプルコードです。{
if (Trigger.isBefore) {
System.debug('********Trigger values***********');
System.debug('***SFDC: Trigger.old is: ' + Trigger.old);
System.debug('***SFDC: Trigger.new is: ' + Trigger.new);
}
if (Trigger.isAfter) {
System.debug('********Trigger values***********');
System.debug('***SFDC: Trigger.old is: ' + Trigger.old);
System.debug('***SFDC: Trigger.new is: ' + Trigger.new);
}
}
SalesforceのTrigger.newでできること
この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
ITエンジニアの派遣を利用したい企業様へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。