DML Options & Transaction Control

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

📄 第 173 页 🎬 视频课程

课程章节介绍

各位同学,大家好。今天咱们要翻开 Slide,学习一个很实用的小工具,叫做 ,Database.DMLOptions,。 你看到的这个 “Datab. DMLops”,其实就是它的简写,不用纠结,记住它叫 DML Options 就行。 那它是干什么的呢?简单说,当你在 Apex 里做,插入,或,更新,数据的操作时,如果你想顺便控制一些额外的行为,比如“字段太长时要不要自动截断”、“要不要触发分配规则”、“要不要发送邮件”等等,就可以通过这个 DMLOptions 来设定。它就像给我们的 DML 语句加了一堆开关和选项。 我们来看看这些开关长什么样。 第一个,,allowFieldTruncation,。这个属性控制字符串截断。比如一个文本字段最大长度是 255,你不小心塞了 300 个字符过去,如果把这个设为 true,系统就直接帮你把多出来的部分剪掉,保存成功;如果设为 false,它就会报错。简单省心吧? 第二个,,assignmentRuleHeader,。它专门针对案例 (Case) 和 线索 (Lead),用来指定是否要跑分配规则。比如让系统自动把新案例分配给相应的人,你设一下这个属性就行,不用再去 UI 上勾选。 第三个,,duplicateRuleHeader,。如果你保存的记录被系统判定为是重复的,比如手机号跟现有记录一样,一般会阻止保存。但把这个属性设上,就允许硬把这条“重复”记录存进去。 第四个,,emailHeader,。它可以控制自动回复邮件、是否发送给外部用户、以及是否触发跟邮件相关的 Apex 触发器。做批量导入时,为了不狂发邮件炸邮箱,就可以用这个关掉。 第五个,,locale,。有时你拿到错误信息的返回,或者一些选项列表的标签,这个属性能指定用什么语言返回,做多语言项目时会帮上忙。 最后,,optAllOrNone,,有的版本可能写成 optAllOrNo,意思是“全有或全无”。如果设为 true,你一次插入 100 条记录,但凡有一条失败,整个操作全回滚,一条都不留;如果设为 false,就可以部分成功、部分失败,剩下的记录能保存。 好了,记住最重要一点:,DMLOptions 只对 Apex 里的 DML 操作管用,,在标准 Salesforce 界面上点保存按钮,它可不理这堆设置。以后再写批量逻辑的时候,脑子里就要冒出这个好朋友啦。好,这节课我们就聊到这儿,下次见!

关键词

Apex Salesforce Developer Guide