You need to sign in to do that
Don't have an account?

リスト内で同じデータを更新する場合の処理方法
ガバナ制限にひっかからないよう、updateをする際はリストを利用して一括でデータの更新を行っています。
CustomObjectA[] la = new CustomObjectA[]{}; CustomObjectA[] a = [select Id, Hour from CustomObjectA]; for(Integer i=0; a.size()>i; i++){ a.Hour = a.Hour + 1; la.add(a); } update la;
この時、例えばデータの変更履歴を残す目的で同じIDのデータを変更したい場合、「IDが重複していてUPDATEできない」旨のエラーメッセージが表示され、UPDATEできなくなります。
このようなパターンの時は、一括更新できないのでしょうか。また、どのようにすれば同じIDのデータをUPDATEすることが
できるのでしょうか。
画面からの更新の場合はありえないパターンかもしれませんが、データローダなどを使用する場合はあり得ると思います。
sihmeieos
「 リスト内で同じデータを更新する」から重複エラーが発生しています。
まとまった単位で、更新するのではなく、
1レコードずつ処理したらエラーにならないと思います。
CustomObjectA[] la = new CustomObjectA[]{};
CustomObjectA[] a = [select Id, Hour from CustomObjectA];
for(Integer i=0; a.size()>i; i++){
a.Hour = a.Hour + 1;
la.add(a);
update la;
}