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

問題

開発者は実行匿名ウィンドウで次のコードを記述します。

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操作が行われています。

  1. Delete acc; – これは1つのDMLステートメントとしてカウントされます。
  2. Database.emptyRecycleBin(acc); – これも1つのDMLステートメントとしてカウントされます。

したがって、Limits.getDMLStatements() はこのコードが実行された後に2を返すことになります。

また、Limits.getLimitDMLStatements() は、このコードの実行コンテキストに関係なく、DMLステートメントの最大許容数として150を返します。よって出力結果は「2, 150」となります。

次の問題へ

前の問題へ

1問目から復習する

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

この記事を書いた人

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

コメント

コメントする

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約が適用されます。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次