次のコード スニペットは、2,000 件を超えるリード レコードがある環境で Lightning Web コンポーネントによって実行されます。 Apex トランザクション内でどのガバナー制限を超える可能性がありますか?
正解:C
The provided code attempts to update allLeadrecords in an environment with more than 2,000 records. This will likely exceed the governor limit for the total number of records processed in DML statements, which is 10,000 per transaction. To avoid this, the developer can useDatabase.updatewith batching logic. Reference:Governor Limits for DML Rows
最新のコメント (最新のコメントはトップにあります。)
suisei - 2025-11-19
正:B、、、
GenerativeAI - 2025-11-19
領域の確認 領域: 2. プロセスの自動化とロジック (Process Automation and Logic)
トピック: ガバナ制限、Apexのベストプラクティス(Bulk化)
正解の解説 B. 発行されたDMLステートメントの合計数 (Total number of DML statements issued)
最新のコメント (最新のコメントはトップにあります。)
正:B、、、
領域の確認
領域: 2. プロセスの自動化とロジック (Process Automation and Logic)
トピック: ガバナ制限、Apexのベストプラクティス(Bulk化)
正解の解説
B. 発行されたDMLステートメントの合計数 (Total number of DML statements issued)
この問題コードには、Apex開発における**最大のアンチパターン(やってはいけない書き方)**が含まれています。それは 「forループの中にDMLステートメント(update)を書いている」 ことです。
動作シミュレーション:
環境には 2,000件以上 のリードがあります。
for ループは、取得したレコードの数だけ(2,000回以上)繰り返されます。
ループの中で毎回 update thisLead; が実行されます。
Salesforceのガバナ制限では、1回のトランザクションで発行できるDMLステートメントの回数は「150回」まで です。
したがって、ループが151回目に達した瞬間に System.LimitException: Too many DML statements: 151 エラーが発生して処理が落ちます。
不正解の解説
A. 発行されたSOQLクエリの合計数 これは 不正解 です。 SOQLクエリ([SELECT ...])は、forループの定義部分に書かれています。この書き方(SOQL for Loop)の場合、クエリ自体は内部的に効率化されて実行されますが、回数としては 1回 としてカウントされます。SOQLの発行制限(100回)には引っかかりません。
C. DML文の結果として処理されたレコードの合計数 これは 不正解 です。 DMLで処理(作成・更新・削除)できるレコードの総数は 10,000件 です。 今回の対象レコードは「2,000件を超える」程度ですので、レコードの総数制限自体には引っかかりません。問題は「回数」です。
💡 正しい書き方(Bulk化)
このエラーを回避するには、リストを使って 「ループの外で1回だけ」 update を実行するように書き換える必要があります。
Apex
@AuraEnabled
public static void updateLeads() {
// 1. 更新用の空リストを作る
List<Lead> leadsToUpdate = new List<Lead>();
// 2. ループ内ではリストに追加するだけ(DMLしない!)
for(Lead thisLead : [SELECT Origin__c FROM Lead]) {
thisLead.LeadSource = thisLead.Origin__c;
leadsToUpdate.add(thisLead);
}
// 3. ループの外で一括更新(これでDML消費は1回だけ)
update leadsToUpdate;
}
この「ループ内DML禁止」は試験で...
正:B、、、