【Salesforce】System.TypeException: Cannot have more than 10 types in a single save operation. Please reduce number of types in one save operation.

【Salesforce】System.TypeException: Cannot have more than 10 types in a single save operation. Please reduce number of types in one save operation.

SalesforceのApexコードで、Listの型SObject型を設定することが出来ます。

そうすることによってListに異なる型のSObjectレコードを設定することが出来ます。

List<SObject> objectList;

objectList = new List<SObject>();
objectList.add(new Account());
objectList.add(new Contact());
objectList.add(new Task());
objectList.add(new Document());
objectList.add(new Contract());
objectList.add(new Campaign());
objectList.add(new Campaignmember());
objectList.add(new Lead());
objectList.add(new Attachment());
objectList.add(new product2());
objectList.add(new Case());

このようなListに対してDMLを発行すると、エラーが発生しました。

System.TypeException: Cannot have more than 10 types in a single save operation. Please reduce number of types in one save operation.

1度の保存では10を超える型を保存できないから見直してねってことらしいです。

ちなみに、上のコードでinsertを発行すると発生します。

List<SObject> objectList;

objectList = new List<SObject>();
objectList.add(new Account());
objectList.add(new Contact());
objectList.add(new Task());
objectList.add(new Document());
objectList.add(new Contract());
objectList.add(new Campaign());
objectList.add(new Campaignmember());
objectList.add(new Lead());
objectList.add(new Attachment());
objectList.add(new product2());
objectList.add(new Case());

insert objectList;

10を超えなければ良いということなので、10以下であれば大丈夫ということですね。

こちらのコードは正常に動作しました。

List<SObject> objectList;

objectList = new List<SObject>();
objectList.add([select Id from Account limit 1]);
objectList.add([select Id from Contact limit 1]);

update objectList;

便利なのですが、複数の型を保存する場合にはトリガやワークフローの動きに注意する必要がありそうですね。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です