6

通常,当触发器运行时,我们会检查用户拥有什么样的配置文件,如果它是我们不希望触发器运行的那种,那么我们在运行任何其他代码之前退出触发器。

问题:我们安装了一个从其他公司购买的 SF 包,它的所有代码对我们来说都是不可见的,并且不可编辑。除了通过 UI 手动禁用它们之外,我们如何阻止其中一些触发器运行?我想在运行测试类时暂时禁用它们。

正在考虑做这样的事情,但收到错误消息“ApexTrigger 上不允许 DML”。

ApexTrigger at = [select id from ApexTrigger where name='SomeTriggerName'];
at.status = 'Inactive';
update at;
4

2 回答 2

4

我试过做类似的事情,但被卡住了。我不相信有办法在不让受管软件包的所有者更新 Apex 代码的情况下完成您所要求的操作。

您在问题之前列出的方法是一个很好的解决方案;不过,我建议另外使用自定义设置。您可以建议触发器的所有者/开发人员在执行触发器之前实施自定义设置检查。对于我自己的一些触发器,这是我能想到的最佳解决方案。

如果 ApexTrigger 对象可以更新,那就太好了,但 Salesforce 不允许。

于 2012-01-26T18:57:03.973 回答
1

我相信您唯一的选择是卸载或取消部署受管软件包。

于 2012-01-26T18:59:48.243 回答