【Salesforce】MIXED_DML_OPERATION, 非設定オブジェクトを更新した後の設定オブジェクト上の DML 操作 (またはその逆) は、許可されていません

【Salesforce】MIXED_DML_OPERATION, 非設定オブジェクトを更新した後の設定オブジェクト上の DML 操作 (またはその逆) は、許可されていません

Salesforceでテストクラスを作成する際に、エラーが発生しました。

エラーの内容はこんな感じです。

MIXED_DML_OPERATION, 非設定オブジェクトを更新した後の設定オブジェクト上の DML 操作 (またはその逆) は、許可されていません

エラーのメッセージを見ただけではよく分かりませんね。

SalesforceのSObjectには設定オブジェクトと呼ばれるものがあり、非設定オブジェクトのDML操作の後に設定オブジェクトのDML操作を行うとこのエラーが発生します。

処理の途中で権限が変わったりするのを防ぐためだそうです。
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_dml_non_mix_sobjects.htm

ちなみに、今回はテストクラスでグループやグループメンバを作成したことによって発生しました。

テストクラスでの回避策としては、System.runAsを使用することだそうです。

別のユーザを指定しなければいけないと思っていましたが、サンプルを見るとそんなこともないみたいですね。
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_dml_non_mix_sobjects_test_methods.htm

そのあたりはよく分かりませんね。

何だか久しぶりに見たエラーな気がします。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です