我在一个对象上有两个触发器。
一个是托管包,我无法看到或修改触发器内的内容。
一个是我设计的。
我想在受管软件包触发器之前运行我自己创建的触发器。我可以控制触发器的执行顺序吗?
因为它现在总是首先运行受管软件包触发器。我想先运行我的触发器。我已经思考了几天。我公司的所有同事都不知道如何实现这个目标。如果不解决此问题,我将无法继续我的工作。请帮帮我。
我在一个对象上有两个触发器。
一个是托管包,我无法看到或修改触发器内的内容。
一个是我设计的。
我想在受管软件包触发器之前运行我自己创建的触发器。我可以控制触发器的执行顺序吗?
因为它现在总是首先运行受管软件包触发器。我想先运行我的触发器。我已经思考了几天。我公司的所有同事都不知道如何实现这个目标。如果不解决此问题,我将无法继续我的工作。请帮帮我。
在系统中没有办法控制调用触发的顺序,我认为这是不安全编程的限制。您可以访问包触发器吗?在一个对象上拥有多个触发器是一种非常糟糕的方法,更好的解决方案是使用一个触发器来调用各种处理程序。然后,在处理程序级别,您可以管理此处理程序的顺序..
例如,这是一个简单的触发器,它在不同的事件上被调用,并以不同的逻辑调用不同的方法:
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
}
}
}
为了保证一个handler只有在前一个handler执行完毕后才能被调用,可以使用handler结束时会改变值的状态变量,在调用其他handler之前可以检查一下。我希望这对您将来有所帮助:)