SalesForce DML基于集合的操作和原子事务

SalesForce DML基于集合的操作和原子事务,salesforce,Salesforce,我刚刚开始了解Salesforce APEX及其DML。似乎可以通过构造列表、向列表中添加要更新的项目,然后发出updatemylist调用来执行批量更新 调用update是否会创建一个原子事务,这样,如果出于任何原因对列表中某个项目的更新失败,整个更新操作都会回滚?如果没有,是否有办法将更新包装到原子事务中 您的整个上下文是一个原子事务。当Apex代码运行时,SF已经启动,无论是Visualforce按钮单击、触发器还是任何其他入口点。若您遇到验证错误、空指针引用异常、尝试除以零、抛出异常等—

我刚刚开始了解Salesforce APEX及其DML。似乎可以通过构造列表、向列表中添加要更新的项目,然后发出
updatemylist
调用来执行批量更新


调用
update
是否会创建一个原子事务,这样,如果出于任何原因对列表中某个项目的更新失败,整个更新操作都会回滚?如果没有,是否有办法将更新包装到原子事务中

您的整个上下文是一个原子事务。当Apex代码运行时,SF已经启动,无论是Visualforce按钮单击、触发器还是任何其他入口点。若您遇到验证错误、空指针引用异常、尝试除以零、抛出异常等—整个过程都将回滚

更新myList在“全部或无”模式下工作。如果其中一条记录在验证规则必填字段丢失等方面失败,您将得到一个异常。您可以将其包装在try-catch块中,但仍然无法加载整个列表

如果您需要“保存您能保存的内容”behavio(u)r-阅读有关此调用的
Database.update()
version的信息。它采用可选的参数,让您可以完全做到这一点

最后但并非最不重要的一点是,如果您正在插入复杂的场景(插入帐户、插入联系人、其中一个联系人失败,但您在try catch中保存了该帐户,那么现在该怎么办,您必须手动删除它吗?弱…)您有
数据库.setSavepoint()
数据库.rollback()
调用


感谢您的回答和其他有用的链接!