如何使用系统触发器操作枚举



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 }
}
}

谢谢。

来自 salesforce.stackexchange.com 的答案

根据Summer 18Apex开发人员指南,System.TriggerOperation类中引入了7个新的枚举值。

AFTER_DELETE AFTER_INSERT AFTER_UNDELETE AFTER_UPDATE BEFORE_DELETE BEFORE_INSERT BEFORE_UPDATE

类似地,在 Trigger 类中添加了一个名为operationType的新变量,该变量存储它正在执行的上下文枚举。

因此,使用开关大小写的触发器将如下所示:

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
} 
}
}

没有失败。在为>特定 when 块执行代码块后,switch 语句退出

开关语句

我的添加

您还可以执行以下操作

trigger AccountTrigger on Account (before delete, before insert, before update, 
after delete, after insert, after update) {
if (Trigger.operationType == TriggerOperation.AFTER_INSERT) {
// do after insert stuff
} 
}

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

最新更新