What Might Cause the Commit to Not Happen?

DEX403 - Lesson 13: Save Order of Execution

📄 第 340 页 🎬 视频课程

课程章节介绍

让我们来聊聊为什么有时候在Salesforce中,我们的操作不会像预期那样被保存下来。想象一下,你在玩一个积木游戏,每一步都必须稳稳当当,如果中间有一块积木放错了,整个塔就会倒塌。Salesforce中的事务处理也是类似的,如果任何一个步骤出了问题,整个操作就会回滚,就像积木塔倒塌一样,所有之前的操作都不会被保存。 首先,系统验证是一个常见的拦路虎。比如,如果你在一个应该输入数字的字段里不小心输入了文字,或者忘记填写那些必须填写的字段,系统就会说:“不行,这不符合规则。”然后整个操作就会停止。 接下来是对象的验证规则。假设有一个规则说,某个字段的值必须在1到25之间,但你输入了30,这就像是在说“我要把这块积木放在塔顶”,但实际上塔顶已经满了,放不下了。所以,整个操作就会失败。 触发器也是一个可能的原因。触发器是Salesforce中的一种自动化工具,它可以在某些操作发生时自动执行一些代码。如果触发器中的代码有问题,比如超出了Salesforce设定的资源限制,或者添加了错误信息到记录中,那么整个事务也会回滚。 流程和工作流规则也可能导致问题。比如,如果一个流程尝试进行一个数学操作,比如除以零,这在数学上是不允许的,所以操作就会失败。或者,如果一个工作流规则试图修改一个父记录中的汇总值,但这个修改违反了父记录的验证规则,那么整个事务也会被回滚。 让我们通过一个具体的例子来理解这一点。假设你有一个父记录和几个子记录。父记录有一个汇总字段,用来计算所有子记录中状态为“已批准”的数量。你创建了一个父记录,然后创建了一个子记录,但没有设置状态。工作流规则自动将状态设置为“已批准”。然后你又创建了另一个子记录,同样没有设置状态。这次,系统发现如果这个子记录的状态也被设置为“已批准”,那么父记录中的汇总值就会超过允许的最大值。因此,系统会显示一个错误,告诉你不能这样做。如果你点击取消,那么这个子记录就不会被创建,整个操作也就不会保存。 所以,在Salesforce中,确保每一步都符合规则是非常重要的,这样才能确保你的操作能够顺利保存下来。