問題
開発者は実行匿名ウィンドウで次のコードを記述します。
List<Account> acc = [SELECT Id FROM Account LIMIT 10];
Delete acc;
Database.emptyRecycleBin(acc);
System.Debug(Limits.getDMLStatements()+', '+Limits.getLimitDMLStatements());
デバッグステートメントの結果は何ですか。
- 1, 150
- 2, 150
- 1, 100
- 2, 200
正解
- 1, 150
- 2, 150
- 1, 100
- 2, 200
解説
Limits.getDMLStatements()
と Limits.getLimitDMLStatements()
は、Salesforce Apexで提供されるメソッドで、DMLステートメントの使用とその制限に関する情報を提供します。それぞれのメソッドの詳細について説明します。
- Limits.getDMLStatements():
- このメソッドは、現在のトランザクションで実行されたDMLステートメント(例: insert、update、deleteなど)の数を返します。例えば、あるApexコード内で2回のinsert操作と1回のdelete操作を実行した場合、このメソッドは3を返します。
Database.emptyRecycleBin
は、Salesforceのリサイクルビン内のレコードを完全に削除するためのメソッドです。この操作はDML操作としてカウントされ、Limits.getDMLStatements()
メソッドの結果に影響します。
- Limits.getLimitDMLStatements():
- このメソッドは、1つのトランザクション内で許可されるDMLステートメントの最大数を返します。
- Salesforceの基本的なガバナ制限では、1つのトランザクションでのDMLステートメントの最大数は150です。この数値は変動せず、常に一定です。
問題のコード内で、以下のDML操作が行われています。
Delete acc;
– これは1つのDMLステートメントとしてカウントされます。Database.emptyRecycleBin(acc);
– これも1つのDMLステートメントとしてカウントされます。
したがって、Limits.getDMLStatements()
はこのコードが実行された後に2を返すことになります。
また、Limits.getLimitDMLStatements()
は、このコードの実行コンテキストに関係なく、DMLステートメントの最大許容数として150を返します。よって出力結果は「2, 150」となります。
次の問題へ
【Salesforce 認定Platformデベロッパー】試験対策:第88問
問題 Lightningコンポーネントはリソースバンドルに何を含めることができますか。2つ選びなさい。 カスタムクライアント側のレンダリング動作 縮小化のためのスクリプト…
前の問題へ
【Salesforce 認定Platformデベロッパー】試験対策:第86問
問題 カスタムオブジェクトには、Food_Preference__cというカスタム選択リスト項目が存在します。この選択リストには、”Vegan”、”Kosher”、”No Preference”というオプシ…
1問目から復習する
【Salesforce 認定Platformデベロッパー】試験対策:第1問
問題 デバッグログに書き込まれるときのxの値は何ですか。 Integer x = 0; do { x = 1; x++; } while (x < 1); System.debug(x); 0 1 2 3 正解 0 1 2 3 解説 デバッ…
コメント