我经常在许多SFDC触发器中看到IsAfter和IsBefore方法,但是我无法理解为这些方法提供真值或假值的逻辑! 所以,一般来说,我在某处我有Trigger.isBefore(同样的问题对IsAfter有效),我怎么能理解这个布尔值是真还是假?取决于什么? 我阅读了这些方法的文档,但只是我无法理解为什么Trigger.isBefore将返回我的真或假!这件事让我烦恼,我想我永远不会完全理解这个概念,请帮助我!
答案 0 :(得分:2)
Trigger.isBefore
只有在条件中具有以下一项或多项时才会返回true:
before delete
before insert
before update
触发器会针对其中一个条件触发。
同样适用于Trigger.isAfter
,除非您需要替换"" for"之前"在条件。
大多数情况下,您将要处理Triggers and Order of Execution中的第3步和第6步。
before
次触发器。 [Trigger.isBefore
将为真] after
次触发器。 [Trigger.isAfter
将为真] 答案 1 :(得分:1)
您需要阅读DML事件的“保存执行顺序”。如果您在Force.com平台上发布记录保存,很多事情都会在幕后发生,包括执行“之前”或“之后”触发。保存记录时,第一步之一是执行与记录的sObject类型关联的before触发器。最后一步之一是执行after触发器。因此isBefore只是告诉你:是的,对于这个保存事件,平台已达到保存的执行顺序中的点,现在它将自动触发一个触发器。
我希望有所帮助。
答案 2 :(得分:0)
https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_context_variables.htm解释说,如果在保存任何记录之前触发了触发器,则isBefore返回true,如果在保存所有记录后触发了此触发器,则isAfter返回true。
该页面还有一个有用的示例,说明如何使用此代码来执行仅针对特定触发条件执行的代码。