【Salesforce認定プラットフォームデベロッパー】試験対策:第3問

問題

次のコードスニペットは、2,000を超えるリードレコードがある環境でLightningWebコンポーネントによって実行されます。

@AuraEnabled
public void static updateLeads() {
for (Lead thisLead : [SELECT Origin__c FROM Lead]) {
thisLead.LeadSource = thisLead : Origin;
update thisLead;
}
}

Apexトランザクション内で超過する可能性のあるガバナの制限はどれですか?

A. DMLステートメントの結果として処理されたレコードの総数

B. 発行されたDMLステートメントの総数

C. 発行されたSOQLクエリの総数

D. SOQLクエリによって取得されたレコードの総数

正解

A. DMLステートメントの結果として処理されたレコードの総数

B. 発行されたDMLステートメントの総数

C. 発行されたSOQLクエリの総数

D. SOQLクエリによって取得されたレコードの総数

解説

A. 不正解 - DMLステートメントの結果として処理されたレコードの総数は150件までなので、このコードでは超過しません。

B. 正解 - このコードでは、各リードレコードを更新するためにDMLステートメントが1件ずつ発行されます。リードが2,000件以上ある場合、2,000件のDMLステートメントが発行され、制限の150件を超えてしまいます。

C. 不正解 - 発行されたSOQLクエリの総数は1トランザクションで100件まで可能ですが、このコードではSOQLクエリを1回だけ実行します。

D. 不正解 - SOQLクエリによって取得されたレコードの総数は50,000件まで制限されています。このコードでは2,000件のリードを取得するため、制限には達しません。

ポイント

つまり、このコードではリードレコードを更新するために、多くのDMLステートメントが必要になります。リードが2,000件以上ある場合、発行されるDMLステートメントの総数が150件を超えてしまうため、ガバナ制限を超過する可能性があります。これにより、Apexトランザクションが失敗する可能性があるため、注意が必要です。

おすすめの記事