在使用 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. 执行其他的事件,比如发送电子邮件等

转载于:https://www.cnblogs.com/chengcheng0148/p/apex_data_trigger_execution_order.html

Apex 中插入更新数据的事件执行顺序相关推荐

  1. 向mysql表中插入/更新数据时自动添加创建时间/更新时间

    目录 处理方式一:修改数据库字段类型 测试插入数据: 测试更新数据: 处理方式二:配置生成策略 [MySQL版本] 8.x 处理方式一:修改数据库字段类型 自动添加创建时间: 将字段类型设置为TIME ...

  2. php 重复写入数据,完美解决Thinkphp3.2中插入相同数据的问题

    问题描述 今天在使用TP3.2插入数据的时候,为了避免插入相同的数据(所谓相同的数据,其主键相同或者是唯一索引的字段相同),我创建的索引如下图,主键索引为自增字段,不可能出现重复,即唯一索引可能会出现 ...

  3. asp.net中page对象生命周期和各事件执行顺序

    asp.net页面事件执行顺序: 一.初始化部分: 1.构造函数:创建page类的一个实例,初始化page类的属性. 2.AddParsedSubObject函数: protected virture ...

  4. C语言:向一个有序数组中插入一个数据,并保持数组的有序性。

    C语言:向一个有序数组中插入一个数据,保持数组的有序性. #include <stdio.h> //向一个有序数组中插入一个元素,重新实现有序,并输出. int main() {//注意数 ...

  5. mybatis中显示更新数据成功 ,控制台显示成功,数据库数据却没有修改

    @mybatis中显示更新数据成功 ,控制台显示成功,数据库数据却没有修改 问题分析 查看控制台输出语句,控制台会打印更新方法的日志,显示一条更新语句成功等信息.但是查看数据库是没有任何变化的. 原因 ...

  6. c语言数组中插入新数据

    数组插入数据 在数组的应用中,我们有时会向数组中插入一个数据,而且不打破原来的排序规律,其实数组中的插入数据,就是数据的比较和移动:如果想要弄懂这些方法最好拿笔比划以下,或者debug一下,了解其中的 ...

  7. 使用itextpdf在pdf模板中插入对应数据

    大家好今儿给大家带来的是使用itextpdf在pdf模板中插入对应数据 目录 大家好今儿给大家带来的是使用itextpdf在pdf模板中插入对应数据 1.需求描述 2.操作Adobe Acrobat ...

  8. mysql中插入中文数据

    今天遇到的问题使mysql中插入中文数据后显示乱码,我在mysql中插入中文的时候,可以插入可是select的时候却无法显示,为此我写下这篇博客用于解决mysql插入中文. 由于有些截图没有记录下来, ...

  9. WPF 九 ( loaded 事件和 Initialized 事件区别以及事件执行顺序总结)

    在 WPF 中, 控件有 Loaded 和 Initialized 两种事件. 初始化和加载控件几乎同时发生, 因此这两个事件也几乎同时触发. 但是他们之间有微妙且重要的区别..具体区别如下 概念介绍 ...

  10. 引用asp.net母版页后,母版页和内容页的页面事件执行顺序

    如下,经测试得到的执行步骤: 第01步.内容页的 Page_PreInit 第02步.母版页的 Page_Init 第03步.内容页的 Page_Init 第04步.内容页的 Page_InitCom ...

最新文章

  1. python flask 配置处理
  2. 系统集成知识点整理(五)质量管理
  3. JAG Practice Contest for ACM-ICPC Asia Regional 2016.K.Non-redundant Drive(点分治)
  4. 找回丢失的端星网络客户端
  5. Qt SD卡 文件系统挂载、文件预览
  6. 在.NET中用excel导出(概要)
  7. c# 2维数组 取一维_C#| 不同类型的一维数组声明
  8. 宁德时代拟定增募资不超582亿元,用于锂离子电池项目等
  9. ASP.NET--表达式、运算符与分支结构
  10. 开课吧Java面试题:使用 this 和 super 要注意
  11. 如何进入服务器文件管理,服务器怎么打开任务管理器
  12. excel转json脚本
  13. 移植Linux Kernel SM750 驱动到VxWorks 7
  14. 软件设计师----计算机网络
  15. Derby 和 Geronimo 使用感觉
  16. 安防海量高清视频无损压缩—四川省智慧公共安全系统案例
  17. 内存盘 固态硬盘 机械硬盘 速度测试
  18. 计网——14数字传输技术
  19. Android 操作系统你必须了解的知识
  20. 密码学基础(一)——哈希算法

热门文章

  1. char强制类型转换为int_数据类型专题之三: char类型和类型转换
  2. python静态检查工具哪个好用_介绍几款 Python 类型检查工具
  3. colspan会影响内部单元格宽度失效_冷轧轧辊失效原因分析及改进措施
  4. 智能体挑战赛 - “奥林匹克 跑步运动”
  5. 容器技术Docker K8s 22 容器服务ACK基础与进阶-存储管理
  6. 算法:把排好序的链表转换为二叉排序树Convert Sorted List to Binary Search Tree
  7. 极客大学架构师训练营--食堂就餐系统架构设计⽂档 -- 第一次作业
  8. shell脚本编写笔记
  9. python glob模块
  10. 多个计算机之间触发事件,相互通信的一种方法----通过文件的办法