問題
開発者は、複雑なトリガーロジックを処理するためにApexヘルパークラスを作成しました。トリガーがDMLガバナ制限を超えた場合、ヘルパークラスはどのようにユーザーに警告できますか。
- Messaging.sendEmail()を使用してトランザクションを続行し、DML文の数を超えたらユーザーにアラートを送信する。
- PageReference.setRedirect()を使用して、DML文の数を超える前にユーザーをカスタムVisualforceページにリダイレクトする。
- Limits.getDMLRows()を使用して、DML文の数を超える前にエラーメッセージを表示する。
- ApexMessage.Messages()を使用して、DML文の数を超えた後にエラーメッセージを表示する。
正解
- Messaging.sendEmail()を使用してトランザクションを続行し、DML文の数を超えたらユーザーにアラートを送信する。
- PageReference.setRedirect()を使用して、DML文の数を超える前にユーザーをカスタムVisualforceページにリダイレクトする。
- Limits.getDMLRows()を使用して、DML文の数を超える前にエラーメッセージを表示する。
- ApexMessage.Messages()を使用して、DML文の数を超えた後にエラーメッセージを表示する。
解説
それぞれの選択肢の理由について説明します。
□ Messaging.sendEmail()を使用してトランザクションを続行し、DML文の数を超えたらユーザーにアラートを送信する。
これは不正解です。Messaging.sendEmail()
メソッドはメールを送信するために使用されますが、DMLガバナ制限を超えた時点でトリガーが失敗し、トランザクションがロールバックされるため、メールの送信は実行されません。加えて、ガバナ制限を超える前に警告を行うことは不可能です。
□ PageReference.setRedirect()を使用して、DML文の数を超える前にユーザーをカスタムVisualforceページにリダイレクトする。
これは不正解です。PageReference.setRedirect()
は通常、VisualforceページのコントローラやカスタムのApexロジックで使用されます。トリガーの中でこの方法を使うことはできません。
□ Limits.getDMLRows()を使用して、DML文の数を超える前にエラーメッセージを表示する。
これは正解です。Limits.getDMLRows()
メソッドを使用して、トリガーが実行されている間に現在のトランザクションでどれだけのDML行が使用されているかを監視できます。これにより、ガバナ制限に達する前に適切なエラーメッセージをトリガーからスローしてユーザーに警告することが可能です。
□ ApexMessage.Messages()を使用して、DML文の数を超えた後にエラーメッセージを表示する。
これは不正解です。ApexMessage.Messages()
というメソッドは存在しないため、エラーメッセージを表示するために使用することはできません。
コメント