2021/06/7

Salesforce apexにおけるDML操作とは?使い方や留意点を簡単に説明します

 
  

Salesforce apexとは?

Salesforce apexはオブジェクト指向のプログラミング言語のひとつです。 構文はJavaに似ており、Salesforceほぼすべてのシステムイベントにapexが使用できます。apexを利用することで、ボタンクリックや関連レコードの更新などをシステムイベントに組み込めます。 利用しているエディションがPerformance Edition、Unlimited Edition、Developer Edition、Enterprise Edition、および Database.comの場合はもともとからapexの機能が含まれています。 例えば、apexを利用すればVisualforceページでもSOAP APIからでもロジックが実行されるようにすることも可能です。

apexのDML操作について

Salesforceのデータを操作する場合、データ操作言語のDMLが使用できます。 その場合、Salesforce apex DML ステートメントを利用します。下記にてapex DML ステートメントをそれぞれ紹介しますで、参考にしてください。

insertステートメント

insert ステートメントでは、1つ以上のsObjectを組織のデータに追加することが可能です。 構文は、insertsObjectとinsert sObject[]を利用します。 例えば、「A」という名前の取引先を追加する場合、
Account newAcct = new Account(name = 'A');
try {
   insert newAcct;
} catch (DmlException e) {
// Process exception here
}
というコードで追加します。

updateステートメント

DML操作におけるupdateステートメントで、 sObjectレコードを更新します。 構文は、updatesObjectとupdate sObject[]を使用します。 例えば、「A」という名前のBillingPostalCode項目を更新する場合、
Account a = new Account(Name='A');
insert(a);

Account myAcct = [SELECT Id, Name, BillingPostalCode FROM Account WHERE Id = :a.Id];
myAcct.BillingPostalCode = '111-1111';

try {
    update myAcct;
} catch (DmlException e) {
    // Process exception here
}
こちらのコードを使用します。

upsertステートメント

既存のオブジェクトの存在を確かめたい場合にUpsert ステートメントを利用します。 構文にはupsert sObject​​ [opt_field]とupsert sObject[]​​ [opt_field]を使用します。 取引先のリストを更新、挿入をしたい場合は、
List acctList = new List();
// Fill the accounts list with some accounts

try {
    upsert acctList;
} catch (DmlException e) {

}
こちらのコードを使用します。

Merge ステートメント

merge ステートメントでは、同じsObjectデータ型のレコードを、1つのレコードに融合します。 マージするレコードは最大3つまでです。 例えば「A」と「B」という名前の取引先をマージする場合、
List ls = new List{new Account(name='A'),new Account(name='B')};
insert ls;
Account masterAcct = [SELECT Id, Name FROM Account WHERE Name = 'A' LIMIT 1];
Account mergeAcct = [SELECT Id, Name FROM Account WHERE Name = 'B' LIMIT 1];
try {
    merge masterAcct mergeAcct;
} catch (DmlException e) {
    // Process exception here
}
というコードで可能です。 出典:Apex DML 操作|Merge ステートメント 参照:https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_dml_section.htm

Salesforce apexのDML使用における留意点

DMLの使用に関して、DMLオプションの存在とDML操作において同時に使用できない特定のsObjectがある点は理解しておくべきでしょう。 DML オプションを指定するには、オブジェクトで目的のオプションを設定します。DML オプションでは項目の切り捨てや重複ルール情報、メールの自動送信を許可設定などが可能です。 同時に使用できないsObjectがあるのは、組織レコードへのユーザーからの不適切なアクセスを防ぐためです。そのため、こうしたsObjectは別のトランザクションで操作する必要があります。 例えば、FieldPermissionsとGroupのsObjectは他のsObjectと混在して使用できません。

apexのDMLをうまく活用してSalesforceのデータを操作しよう!

Salesforce apex のDML操作を利用すれば、新規レコードのみならず既存のレコードも項目値の更新や削除などが行えます。 うまく利用して、Salesforceのデータ活用をより柔軟に行えるようにしましょう。]]>

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
お悩み診断を始める