ブログcontactblogブログ株式会社日本システムデザインブログセールスフォースSalesforce技術ブログ(MIXED_DML_OPERATIONエラーの回避について)2015.03.09セールスフォースSalesforce技術ブログ(MIXED_DML_OPERATIONエラーの回避について)こんにちは!”なかばゆう”こと中林です!Salesforceでは、1トランザクション内で設定オブジェクトと非設定オブジェクトに対して、DML処理を行おうとした場合、以下のエラーが発生してしまいます。今回は、少し力技ではありますが、このエラーの回避方法についてです。★MIXED_DML_OPERATIONエラーの回避について設定オブジェクトとは、ユーザオブジェクトや、ロールオブジェクトなどが該当します。カスタムオブジェクトなどです。上記エラーは、設定または非設定オブジェクトに対するDML処理のどちらかを、futureアノテーションのついた非同期メソッドで実行することで、回避可能です。acc;}しかし、非同期メソッドはプリミティブデータ型、プリミティブデータ型の配列、プリミティブデータ型のコレクション(List,Mpa)のみを引数に設定可能となっており、sObjectは引数に設定することができないため、List<Account>などあらかじめ用意したsObject型のリストを非同期メソッドに渡してDML処理を実行・・・・といったことはできません。そこで、強引ではありますが、以下のように一度レコードの値をカンマ区切りで1つの文字列にして引数に渡し、非同期メソッド内でカンマで文字列に分割し、各項目の値として設定することで、対処することができます。accList;}引数を文字列のリストにすることで、複数件のレコードを処理することも可能です。引数項目が増えると、何番目にどの項目が入っているのか・・・・分かりにくいという問題はありますが、どうしても設定オブジェクト、非設定オブジェクトを同時に更新する必要がある場合は、検討の1つとしても良いと思います。この記事を読んだ人はこの記事も見ています。Salesforce技術ブログ(セキュア、セキュア、実際セキュア。Salesforce技術ブログ(セキュア、セキュア、実際セキュア。(追記)Salesforce技術ブログ(MIXED_DML_OPERATIONエラーの回避について)前の記事Salesforce技術ブログ(小ネタ:小数点項目を数式で参照する場合の注意事項)次の記事Salesforce技術ブログ(グローバル検索についてまとめてみた)contactご相談・ご質問等ございましたら、お気軽にお問い合わせください。partnerrecruitサイトのご利用についてプライバシーポリシーサイトマップcontact。