(追記)Salesforce技術ブログ(MIXED_DML_OPERATIONエラーの回避について)

(追記)Salesforce技術ブログ(MIXED_DML_OPERATIONエラーの回避について)

(追記)Salesforce技術ブログ(MIXED_DML_OPERATIONエラーの回避について)

こんにちは!"なかばゆう"中林です!


以前、

「MIXED_DML_OPERATION, 非設定オブジェクトを更新した後の設定オブジェクト上のDML操作

(またはその逆)は、許可されていません」

というエラーを回避する方法について記事にしましたが、対処方法がカンマ区切り化するという

昭和的なものであったため、より良い解決方法について記載します。

 

public void save(){
 // 設定オブジェクトレコード更新
 update user;
 // 取引先更新処理
 List<Account> accList = new List<Account>();
 accList.add(
  new Account(
   Name = 'テスト取引先', // 取引先名
   Phone = '000-0000-0000', // 電話
   NumberOfEmployees = 300 // 従業員数の順番
  )
 );

 accList.add(
  new Account(
   Name = 'サンプル会社', // 取引先名
   Phone = '111-111-111', // 電話
   NumberOfEmployees = 200 // 従業員数の順番
  )
 );

 // List<Account>型からJSON文字列に変換
 String accListJSON = JSON.serialize(accList);

 // 非同期メソッド呼び出し
 insertAcounnt(accListJSON);
}

@future
private static void insertAcounnt(String accListJSON){
 // JSON文字列からList<Account>型に復元
 List<Account> accList = (List<Account>)JSON.deserialize(accListJSON, List<Account>.class);
 insert accList;
}

 

少し21世紀的な対応となりましたね。

ご参考ください。