0

我在一个对象上有两个触发器。

一个是托管包,我无法看到或修改触发器内的内容。

一个是我设计的。

我想在受管软件包触发器之前运行我自己创建的触发器。我可以控制触发器的执行顺序吗?

因为它现在总是首先运行受管软件包触发器。我想先运行我的触发器。我已经思考了几天。我公司的所有同事都不知道如何实现这个目标。如果不解决此问题,我将无法继续我的工作。请帮帮我。

4

1 回答 1

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

为了保证一个handler只有在前一个handler执行完毕后才能被调用,可以使用handler结束时会改变值的状态变量,在调用其他handler之前可以检查一下。我希望这对您将来有所帮助:)

于 2013-05-14T18:42:08.047 回答