What Might Cause the Commit to Not Happen?

DEX450 - Module 10: The Save Order of Execution and Apex Transactions

📄 第 275 页 🎬 视频课程

课程章节介绍

让我们来聊聊为什么有时候在Salesforce中,我们的操作不会像预期那样被保存下来。想象一下,你正在做一个项目,每一步都需要完美无缺才能完成。如果中间有任何一步出了问题,整个项目可能就要从头再来。Salesforce中的事务处理也是类似的。 首先,系统验证是一个常见的拦路虎。比如,如果你在一个只能填数字的地方不小心输入了文字,或者忘记填写那些必须填的字段,系统就会说“不行,这不对”,然后整个操作就会被取消。 接着,对象的验证规则也可能导致问题。比如,规则可能要求你输入一个1到25之间的数字,但如果你输入了26,系统就会拒绝这个操作。 触发器也可能是个问题。如果触发器在执行过程中遇到了错误,比如超出了Salesforce设定的某些限制(比如处理的数据量太大),那么整个事务也会被回滚。 流程或流中的错误也会导致同样的问题。比如,如果你在流程中设置了一个字段更新,但这个更新尝试进行一个不合法的操作,比如除以零,这就会引发一个异常,导致整个事务失败。 工作流规则也可能是个麻烦制造者。举个例子,如果你设置了一个工作流规则,当某个字段为空时,自动将其设置为“已批准”。但如果这个更改导致父记录中的某个验证规则被违反(比如,父记录不允许有超过一个“已批准”的子记录),那么整个事务就会被回滚,子记录也不会被保存。 所以,你看,Salesforce中的每一步都需要小心翼翼,确保所有的规则和限制都被遵守,否则就可能需要从头再来。希望这些例子能帮助你更好地理解为什么有时候承诺不会发生。