Triggers Salesforce触发器:Trigger.isBefore何时返回true或false?取决于什么?

Triggers Salesforce触发器:Trigger.isBefore何时返回true或false?取决于什么?,triggers,salesforce,Triggers,Salesforce,我经常在许多SFDC触发器中看到IsAfter和IsBefore方法,但我无法理解为这些方法提供真值或假值的逻辑! 所以,一般来说,我有Trigger.isBefore(同样的问题对IsAfter有效),我如何理解这个布尔值是真是假?取决于什么? 我阅读了这些方法的文档,但我无法理解为什么Trigger.isBefore会返回true或false!这件事让我很恼火,我想我永远不会完全理解这个概念,请帮帮我 说明,如果在保存任何记录之前触发触发器,isBefore将返回true;如果在保存所有记录

我经常在许多SFDC触发器中看到IsAfter和IsBefore方法,但我无法理解为这些方法提供真值或假值的逻辑! 所以,一般来说,我有Trigger.isBefore(同样的问题对IsAfter有效),我如何理解这个布尔值是真是假?取决于什么? 我阅读了这些方法的文档,但我无法理解为什么Trigger.isBefore会返回true或false!这件事让我很恼火,我想我永远不会完全理解这个概念,请帮帮我

说明,如果在保存任何记录之前触发触发器,isBefore将返回true;如果在保存所有记录之后触发此触发器,isAfter将返回true


该页面还提供了一个有用的示例,说明如何使用该示例生成仅在特定触发条件下执行的代码。

trigger.isBefore
仅在条件中包含以下一项或多项时才会返回true:

  • 删除前的
  • 插入前的
  • 更新前的
触发器在这些条件之一下触发

这同样适用于
触发器。isAfter
除非您需要在条件中用“after”替换“before”

大多数情况下,您将处理中的步骤3和6

  • 从数据库加载原始记录或初始化upsert语句的记录
  • 从请求中加载新记录字段值并覆盖旧值
  • 执行所有
    触发器之前的
    [
    触发器.isBefore
    将为真]
  • 再次运行大多数系统验证步骤,例如验证所有必填字段是否具有非空值,并运行任何用户定义的验证规则。Salesforce不会再次运行的唯一系统验证(当请求来自标准UI编辑页面时)是特定于布局的规则的强制执行
  • 将记录保存到数据库,但尚未提交
  • 触发器之后执行所有
    [
    触发器。isAfter
    将为真]
  • 您需要阅读DML事件的“保存执行顺序”。如果在Force.com平台上发布记录保存,很多事情都会发生在幕后,包括执行“before”或“after”触发器。保存记录时,第一步之一是执行与记录的sObject类型关联的before触发器。最后一个步骤是执行after触发器。因此,isBefore只是告诉您:是的,对于这个保存事件,平台已经达到了执行保存的顺序,现在它将自动触发before触发器


    我希望这会有所帮助。

    我阅读了所有的页面和示例,但我仍然无法理解其中的逻辑:好的,如果在保存任何记录之前触发了触发器,isBefore将返回true,但我如何知道触发器是在保存任何记录之前还是之后触发的?您可以在保存之前和之后编写相应的触发器代码,例如,在before状态下,您可能会进行验证,而在after状态下,您可能会导致其他记录发生更改。从一个建议来看,这可能涉及到在审计表中生成日志记录之类的事情。非常感谢!即使这样,这个问题也有点老了,现在我在这个领域的表现比一年前好多了!