Salesforce Before Delete Flow中触发记录删除失败时关联记录变更是否回滚
Salesforce Before Delete Flow 关联更新的事务回滚规则
结论先行
所有同步执行的操作都会被全部回滚,不会保留关联记录的更新结果。
核心逻辑说明
- Salesforce 中同一个触发上下文内的所有同步操作,都归属同一个数据库事务,遵循「全部成功则提交、任意失败则全量回滚」的原子性原则。
- Before Delete Flow 属于删除操作事务的前置执行环节,你在Flow内对关联记录执行的更新操作,和后续触发Flow的原始记录删除操作,是绑定在同一事务中的。
- 无论删除失败的原因是验证规则拦截、触发器抛出异常、权限不足还是其他系统错误,整个事务内已经执行的所有DML变更(包括你对关联记录的更新、Flow内其他数据修改操作)都会被撤销,数据恢复到事务启动前的状态。
场景示例
假设你在删除「商机」记录的Before Delete Flow中,更新了关联「客户」记录的自定义字段最近商机删除时间__c,后续因为该商机存在已审批的回款单、触发了阻止删除的验证规则:
最终结果为:商机不会被删除,同时
最近商机删除时间__c字段的更新也会被回滚,不会保留修改后的值。
例外说明
如果你需要实现「就算原始记录删除失败,关联记录的更新也要保留」的逻辑,只能将关联更新逻辑改为异步执行:比如通过Queueable Apex、触发异步执行的平台事件来调用更新逻辑,异步操作会独立于原始删除事务单独提交,不受原事务失败的影响。
内容的提问来源于stack exchange,提问作者Milan Sharma
相关产品推荐
相关产品推荐

