如何使用System.TriggerOperation enam?

时间:2018-06-10 05:29:54

标签: salesforce

Salesforce提供了一项允许使用TriggerOperation枚举的新功能。我找不到任何与传统触发器相比如何使用此方法的示例。例如,如何替换此代码:

trigger TriggerName on ObjectName (before delete, before insert, before update,
                                   after delete, after insert, after update) {

    if (Trigger.isBefore) {
       if (Trigger.isInsert) { // do something }
       if (Trigger.isUpdate { // do something }
    } else {
       if (Trigger.isInsert) { // do something }
       if (Trigger.isUpdate { // do something }
    }
}

感谢。

1 个答案:

答案 0 :(得分:1)

来自salesforce.stackexchange.com

的回答

根据<script src="https://rawgit.com/moment/moment/2.2.1/min/moment.min.js"></script> Apex开发人员指南,System.TriggerOperation类中引入了7个新的枚举值。

Summer 18

类似地,在名为AFTER_DELETE AFTER_INSERT AFTER_UNDELETE AFTER_UPDATE BEFORE_DELETE BEFORE_INSERT BEFORE_UPDATE 的Trigger类中添加一个新变量,该变量存储它正在执行的上下文枚举。

因此,使用switch case的触发器将如下:

operationType
  

没有堕落。在为特定的块时执行代码块之后,switch语句退出

Switch statement

我的添加

您也可以执行以下操作

 trigger AccountTrigger on Account (before delete, before insert, before update, 
                                    after delete, after insert, after update) {

    switch on Trigger.operationType {
        when AFTER_INSERT{
            //do after insert stuff
        }
        when AFTER_UPDATE{
            //Do after update stuff
        } 

    }
}

最后非常个人恕我直言 - 这只是一种语法糖,对于使用良好触发器架构的人来说没有任何利润