【Salesforce 認定Platformデベロッパー】試験対策:第11問

問題

開発者はオブジェクトProperty__cのレコードを作成する必要があります。

開発者は次のコードブロックを使用します。

List<Property__c> propertiesToCreate = helperClass.CreateProperties();
try {
    /*Question*/
} catch (Exception exp) {
    //Exception handling
}

レコードにエラーが発生して作成に失敗した場合でも、開発者は「/*Question*/」どのようなコードを挿入すれば、少なくともいくつかのレコードを作成することができるでしょうか。

  • Database.insert(propertiesToCreate, System.ALLOW_PARTIAL);
  • insert propertiesToCreate;
  • Database.insert(propertiesToCreate, false);
  • Database.insert(propertiesToCreate);

正解

  • Database.insert(propertiesToCreate, System.ALLOW_PARTIAL);
  • insert propertiesToCreate;
  • Database.insert(propertiesToCreate, false);
  • Database.insert(propertiesToCreate);

解説


正解のコード:

List<Property__c> propertiesToCreate = helperClass.CreateProperties();
try {
    Database.insert(propertiesToCreate, false);
} catch (Exception exp) {
    //Exception handling
}

このコードでは、Database.insert()メソッドを使用して、propertiesToCreateリスト内のProperty__cオブジェクトのレコードを挿入しようとします。ここで重要なのは、第二引数にfalseが指定されている点です。このfalse引数は、部分的な成功を許容することを意味します。したがって、一部のレコードにエラーが発生しても、そのエラーのないレコードは正常に挿入されます。

それぞれの選択肢の理由について説明します。

Database.insert(propertiesToCreate, System.ALLOW_PARTIAL);
これは不正解です。SalesforceのApexには「System.ALLOW_PARTIAL」というオプションは存在しません。したがって、このコードはコンパイルエラーとなります。

insert propertiesToCreate;
これは不正解です。、標準のinsertステートメントはすべてのレコードの成功を要求するため、1つのレコードでエラーが生じると、全レコードの操作がロールバックされます。

Database.insert(propertiesToCreate, false);
これは正解です。Database.insert()の第二引数にfalseを指定することで、エラーのあるレコードのみがスキップされ、エラーのないレコードは正常に挿入されます。これにより、部分的な成功を可能にします。

Database.insert(propertiesToCreate);
これは不正解です。Database.insert()メソッドに第二引数(allOrNoneパラメーター)を指定しない場合、デフォルト値はtrueとなります。これは、全体としての成功を要求します。つまり、処理対象の任意のレコードでエラーが発生した場合、全てのレコードの操作がロールバックされます。

次の問題へ

前の問題へ

1問目から復習する

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

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

目次