How DML Works — Bulk vs. Single

DEX455 - Apex 中的数据操作:sObject 与 DML 完全指南

📄 第 167 页 🎬 视频课程

课程章节介绍

同学们,我们这节课来看看 Apex 里关于 TLR 操作的一些重要规则。什么?你可能还不清楚 TLR 具体指什么,没关系,你可以先把它理解为对 sObject——也就是我们那些标准或自定义对象——做的数据操作,比如新增、修改、删除这类动作。官方文档有时会直接用 TLR 这个缩写,我们就跟着这么叫。 那重点来了,,你可以一次只对一个 sObject 执行 TLR 操作,也可以一次对一组 sObject,也就是一个列表,批量执行,。哪种方式更好呢?答案很明确:推荐批量操作。为什么?因为 Salesforce 对每个 Apex 事务有严格的限制。其中一个限制就是,,每个事务里最多只能有 150 个 TLR 声明,。如果你在循环里逐个对单个记录做操作,每一个都算一次声明,次数很快就爆了。但如果你把一堆记录放进列表,对列表执行一次 TLR 操作,无论列表里有 10 条还是 200 条记录,,都只算一次声明,,这样就能大大降低碰到 150 这个限制的风险。 除了声明次数,还有,另一个限制:单个事务里,TLR 操作能处理的记录总数不能超过 10,000 行,。所以就算你用批量方式省下了声明次数,也要留意总行数别超。 最后还要记住,,大多数 TLR 操作是在当前用户的上下文中执行的,。什么意思呢?就是说,操作时会检查当前用户的权限、共享规则。如果用户没有某个对象的编辑权限,那批操作里的相关记录就会失败;共享规则也类似,只会处理用户有权看到的记录。 简单总结一下:用列表批量执行,一次操作顶多条,不仅高效,还能巧妙避开 150 次声明的坑;同时留神 10,000 行总记录的天花板,并且权限和共享规则会自动生效。把这几点记牢,写代码时心里就有谱了。

关键词

Apex Salesforce Developer Guide