我在一个对象上有两个触发器。
一个是托管包,我无法看到或修改触发器内的内容。
一个是我的设计。
我想在托管包触发器之前运行我自己创建的触发器。我能控制触发器的执行顺序吗?
因为它现在始终首先运行托管包触发器。我想首先运行我的触发器。我已经思考了几天。我公司的所有同事都不知道如何实现这一目标。如果不解决这个问题,我就无法继续工作。请帮帮我。
答案 0 :(得分:0)
在系统中没有办法控制调用触发器的顺序,我认为这是不安全编程的限制。您是否可以访问包触发器?这对于在一个对象上具有多个触发器是一种非常糟糕的方法,更好的解决方案是使用单个触发器来调用各种处理程序。然后,在处理程序级别,您可以管理此处理程序的序列..
例如,这是一个简单的触发器,它在不同的事件上调用,并使用各种逻辑调用不同的方法:
trigger ContactTrigger on Contact (before insert, before update) {
/* Before Update*/
if(Trigger.isUpdate && Trigger.isBefore){
/*
here you can invoke different methods of different classes
(trigger handlers) in different sequences
*/
}
/* Before Insert*/
if(Trigger.isInsert && Trigger.isBefore){
//on other events you can use it too
}
}
}
为了确保只有在执行完前一个处理程序后才能调用处理程序,您可以使用状态变量,其值将在处理程序的末尾更改,并且您可以在调用其他处理程序之前进行检查。我希望这将有助于你将来:)