function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sihmeieossihmeieos 

リスト内で同じデータを更新する場合の処理方法

ガバナ制限にひっかからないよう、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

 

 

 

 

westwest

「 リスト内で同じデータを更新する」から重複エラーが発生しています。

まとまった単位で、更新するのではなく、

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;
}