salesforce - 如何使用 System.TriggerOperation 枚举
问题描述
有一个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 18
Apex 开发人员指南,System.TriggerOperation 类中引入了 7 个新的 Enum 值。
AFTER_DELETE
AFTER_INSERT
AFTER_UNDELETE
AFTER_UPDATE
BEFORE_DELETE
BEFORE_INSERT
BEFORE_UPDATE
类似地,在名为 as 的 Trigger 类中添加了一个新变量,该变量operationType
存储了它正在执行的上下文枚举。
因此,您使用 switch case 的触发器将如下所示:
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
}
}
最后是非常个人化的恕我直言 - 这只是一种语法糖,对于使用良好触发器架构的人来说没有任何利润
推荐阅读
- sql - Oracle 查询组合 2 个选择
- openssl - 错误:取消引用指向不完整类型“RSA {aka struct rsa_st}”的指针
- flutter - Flutter中的模板文件评估
- talend - Talend 动态架构
- javascript - 在打字稿中。为什么从函数变量调用函数时未定义“this”关键字值?
- html - 下拉菜单不显示 Bootstrap
- javascript - 来自弹出窗口的异步 onClick 事件返回值
- java - 使用 Gradle 时 Keycloak 无法加载提供程序类
- docker - 为什么 strace 默认在 docker 中工作?
- c# - Visual Studio 调试器随机跳过行