在使用 Apex 代码插入或更新数据的时候,若干事件会被按顺序执行。了解这些顺序可以提高调试程序的效率,也可以避免不必要的错误。

可以参考官方文档

事件的执行顺序

  1. 从数据库中读取要更新的数据记录或初始化要插入的数据
  2. 更新相关的字段值
  3. 如果插入或更新的请求来自标准的 Salesforce 新建或编辑页面,检查相关的要求,比如字段是否必须、字段的长度是否符合定义、字段的格式是否合理
  4. 如果插入或更新的请求来自 Apex 代码或 API,则只检查外键关联是否合理
  5. 执行所有的 before 类型的触发器代码。注意,当一个操作有不同的触发器逻辑,则它们的执行顺序是不确定的。比如对于“客户”的记录有两个 before insert 类型的触发器逻辑,则任一逻辑都可能先执行
  6. 再次执行第3步所提到的检查
  7. 执行系统中定义的“重复规则”(Duplicate Rules)
  8. 将更新的数据保存到数据库,但是暂时不提交
  9. 执行所有的 after 类型的触发器代码
  10. 执行“分配规则”(Assignment Rules)
  11. 执行“自动回复规则”(Auto-response Rules)
  12. 执行“工作流规则”(Workflow Rules)
  13. 如果“工作流规则”中对于该记录进行了更新,则再次更新该记录。然后,再次执行一次第3步中的检查,和 before 和 after 类型的触发器代码。其他的自定义验证规则以及第7、10、11步中所定义的规则则不会执行
  14. 执行相关的流程(Process)
  15. 执行“升级规则”(Escalation Rules)
  16. 执行“权利过程”(Entitlement Process)
  17. 对与该记录相关的记录进行更新,比如“累计汇总”(Roll-Up Summary)字段的值
  18. 计算记录的分享规则结果
  19. 将第8步中保存的数据提交到数据库,真正的保存起来
  20. 执行其他的事件,比如发送电子邮件等

最新文章

  1. Microsoft VS 2008 过期解决方法破解方法
  2. 【如何快速的开发一个完整的iOS直播app】(采集篇)
  3. mysql的多表查询
  4. SQL2005的cte递归查询子树
  5. WordPress主题制作教程9:文章形式
  6. 使用MongoDB的开源项目
  7. C++ GUI Programming with Qt4 笔记 -- chap2 QDialog
  8. 函数对象的prototype总结
  9. 汉字转拼音(pinyin4j-2.5.0.jar)
  10. 我只能说,CDH5真的屌爆了!!!
  11. java基本类型作为成员变量时的初始值
  12. Seeding(dfs)
  13. 2014年百度之星程序设计大赛 - 资格赛 1002 Disk Schedule(双调欧几里得旅行商问题)
  14. On the first day here
  15. td-agent 收集日志到kafka的配置
  16. popen() 使用举例 (转载)
  17. 【61】git项目实战的步骤总结
  18. arts打卡 从排序数组中删除重复项
  19. 使用C++对物理网卡/虚拟网卡进行识别(包含内外网筛选)
  20. Linux下系统时间函数、DST等相关问题总结(转)

热门文章

  1. AGC008E Next or Nextnext(组合计数,神奇思路)
  2. MySQL实战45讲学习笔记:第三十一讲
  3. dirb参数解析
  4. HTML连载18-id选择器与class区别&class选择器使用思路&后代选择器
  5. 解决python 缺少os.fspath
  6. 一、Spring注解之@ComponentScan
  7. Python之np.random.permutation()函数的使用
  8. Entity Framework Core 练习参考
  9. 关于@HtmlHelper帮助器参数
  10. 转:oracle 体系结构