当在单个事务中处理大量记录时,可能会出现“太多的DML行”错误。这通常意味着您正在执行太多的数据库操作,例如插入、更新或删除。为了解决此问题,您可以使用以下方法:
1.使用更高效的代码来执行您的DML操作,例如批量更新。
2.在处理记录时使用更多的筛选器来减少要插入、更新或删除的记录数。
3.将操作拆分为多个事务,每个事务处理较少的记录数。这将使您能够更好地控制DML操作的数量。
以下是一些示例代码:
// 批量更新示例
List acctsToUpdate = new List();
for (Account a : myAcctList) {
if (a.Industry == 'Finance') {
a.AnnualRevenue = a.AnnualRevenue * 1.1;
acctsToUpdate.add(a);
}
}
update acctsToUpdate;
// 使用筛选器示例
List acctsToProcess = [SELECT Id, Name
FROM Account
WHERE Industry = 'Finance'
AND CreatedDate < :someDate];
// 在此处对记录进行处理
// 分批处理示例
List allAccounts = [SELECT Id FROM Account];
List> accountBatchList = ListUtils.splitList(allAccounts, 200);
for (List accountBatch : accountBatchList) {
update accountBatch;
}