(追記)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世紀的な対応となりましたね。
ご参考ください。