Salesforce触发器面试题

本文详细介绍了Salesforce在DML操作(如插入、更新和删除)之前执行的事件顺序,包括UI页面和非UI发起的请求的不同验证流程。Apex触发器在此过程中起到关键作用,允许在特定事件前后执行自定义操作。触发器语法、触发事件及不同类型的触发器,如isInsert、isUpdate等,也在文中提及。此外,还讨论了递归触发器的防止策略以及对象上触发器数量的限制。
摘要由CSDN通过智能技术生成

您可以在触发器中解释执行顺序吗?

以下是Salesforce在DML事件之前执行的事件的执行顺序。

记录是从数据库加载的,或者在使用upset语句的情况下被初始化。
新记录的字段值将覆盖旧值,**现在取决于请求的来源,此流程有所不同**:
如果请求来自UI页面,则Salesforce将执行以下验证:
检查所有布局特定的规则
在布局和字段级别检查所有必需的值
验证所有字段格式以及最大字段值长度
如果请求不是由UI发起的,则Salesforce仅检查外键的有效性。
现在,所有之前的触发器都在数据库中执行。
再次执行大多数验证,以验证所有必填字段都包含一些值并且不为null,在此步骤中,还将执行用户定义的验证,并且在此步骤中唯一不重复的验证是特定于布局的规则。
在上一步成功之后,通过运行重复规则,对记录进行复查。如果发现重复,则流程停止,并且不执行进一步的操作。
在此步骤中,记录已保存到数据库,但尚未提交。
现在,所有之后的触发器都将执行。
在此步骤中,执行分配规则。
现在,如果存在任何自动响应规则,则将执行它们。
队列中的下一个是工作流,它们在自动响应后执行。
如果工作流正在更新字段,则在这种情况下,字段将在此步骤中更新,并且在此步骤之后的流程会有所不同。
如果字段已更新,则会再次触发更新前和更新后触发器,并且标准验证也将再次执行。自定义验证升级规则和重复规则不需要再次运行。
一旦执行到达此阶段,则如果在对象上声明了任何内容,则将触发过程。
现在执行升级规则。
如有权利规则,将执行。
如果有任何汇总字段,则在此步骤中将对它们进行计算,并且父对象将进行保存过程。
现在执行共享规则。
如果我们达到了这个阶段,则意味着没有错误发生,并且数据已准备好提交到数据库并立即提交。
现在,如果有任何提交后的逻辑(例如电子邮件),则将执行该逻辑。

1 什么是触发器?

Apex触发器使您可以在事件发生之前或之后对Salesforce中的记录(例如插入,更新或删除)执行自定义操作。就像数据库系统支持触发器一样,Apex为管理记录提供触发器支持。

使用触发器来执行通过使用Salesforce用户界面中的点击工具无法完成的任务。例如,如果验证字段值或更新记录中的字段,请改用验证规则和工作流程规则。

2 什么是触发器语法?

trigger TriggerName on ObjectName (trigger_events) {
code_block
}

3 触发器可以触发哪些事件?

触发器是可以在以下事件上执行的一组语句。在以上触发事件中,可以使用以下事件中的一个或多个,并以逗号分隔。

插入之前
更新之前
删除之前
插入后
更新后
删除后
取消删除后
有哪些不同类型的触发器?
有两种类型的触发器:

isExecuting:如果Apex代码的当前上下文是触发器,而不是Visualforce页面,Web服务或工具,则返回true。 executeanonymous() API调用。
isInsert:返回 真的 如果由于插入操作而从Salesforce用户界面,Apex或API中触发了此触发器。
isUpdate:返回 真的 如果由于更新操作而从Salesforce用户界面,Apex或API中触发了此触发器。
isDelete:返回 真的 如果由于删除操作而从Salesforce用户界面,Apex或API中触发了此触发器。
isBefore:返回 真的 如果在保存任何记录之前触发了此触发器。
isAfter:返回 真的 保存所有记录后是否触发了此触发器。
isUndelete:返回 真的 如果从回收站中恢复记录后(即从Salesforce用户界面,Apex或API取消删除操作之后)触发了此触发器。
new:返回sObject记录的新版本的列表。该sObject列表仅在插入,更新和取消删除触发器中可用,并且记录只能在触发器之前进行修改。
newMap:ID到sObject记录的新版本的映射。该映射仅在更新之前,插入之后,更新之后和取消删除触发器之后才可用。
old:返回sObject记录的旧版本的列表。此sObject列表仅在 更新 和 删除 触发器。
oldMap:ID到sObject记录的旧版本的映射。此地图仅在 更新 和 删除 触发器。
size:触发​​器调用中新旧记录的总数。

4 Trigger.New与Trigger.newMap有何不同?

Trigger.New变量返回已调用触发器的sObject的列表,而Trigger.NewMap返回具有新输入记录的ID的映射。NewMap仅在插入后,更新前后和取消删除后才可用。

5 Trigger.new与Trigger.old有何不同?

Trigger.New变量返回已调用触发器的sObject的列表,而Trigger.old返回已调用触发器的记录的较旧版本的列表。Trigger.Old仅在更新和删除事件中可用

6 定义递归触发器,以及如何避免它?

触发器的结果有可能最终再次调用同一触发器,并且可以循环运行,这称为递归触发器。为了避免这种情况,我们应该创建一个静态变量并在执行触发器中的任何操作之前检查此变量的值。

7 在对象上定义的触发器数量是否有限制?

我们可以根据需要在一个对象上定义任意数量的触发器,但是建议每个对象有一个触发器,因为不能保证不同触发器的执行顺序,并且任何触发器都可以首先触发。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Salesforce是一种用于管理和监控客户关系的云计算平台。Salesforce技术开发是指使用Salesforce平台进行应用程序和解决方案开发的过程。 在Salesforce技术开发中,开发人员可以使用Apex编程语言来创建自定义对象、字段和布局以及触发器和工作流规则。此外,Salesforce还提供了强大的API和集成工具,使开发人员能够与其他系统进行集成,并实现数据交换和自定义操作。 Salesforce技术开发可以用于创建和定制各种应用程序和解决方案,如CRM系统、客户服务管理、销售和市场营销自动化等。开发人员可以根据客户的需求和业务流程,使用Salesforce提供的丰富功能和组件来构建功能强大的应用程序。 在Salesforce技术开发过程中,开发人员需要了解Salesforce平台的特性和功能,掌握Apex编程语言和Visualforce页面开发,并熟悉Salesforce的数据模型和安全模型。此外,开发人员还需要具备良好的逻辑思维和问题解决能力,以设计和实现高效可靠的解决方案。 Salesforce技术开发在企业中得到了广泛应用,帮助企业提高销售效率、优化客户关系管理,并实现业务流程的自动化和数字化。Salesforce平台的灵活性和易用性使得开发人员能够快速构建和交付解决方案,并随着业务需求的变化进行灵活调整和扩展。 总之,Salesforce技术开发是一项重要的技能,它能够帮助企业实现数字化转型,提高业务效率和客户满意度。掌握Salesforce技术开发的知识和技能,将为开发人员带来更多的职业机会和发展空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值