自定义对象上不允许 DML 操作 INSERT

问题描述 投票:0回答:1

我有一个在平台事件上触发的触发器。活动很简单。它有一个资产 ID,它应该创建自定义对象 Magazine__c 的记录并将它们与资产相关联。当输入平台事件并处理后,我收到错误:

System.TypeException
DML operation INSERT not allowed on Magazine__c

由于这是一个平台事件触发器,因此它作为自动化流程运行。

我之前没有遇到过被平台事件触发器阻止执行 DML 操作的经历。难道是自动化流程用户没有插入记录的权限?

我尝试使用匿名 apex 插入平台事件:

// Create platform event Create_Magazine_Event__e

Create_Magazine_Event__e event = new Create_Magazine_Event__e();
event.AssetId__c = '02iQI000004KNUQYA4';

// publish event
EventBus.publish(event);
 
// debug if event is published
System.debug('Event published: ' + event);

我也尝试告诉triggerhandler类只插入一个Account而不是Magazine__c记录,检查它是否发生了同样的问题:

        // insert magazineList;
        insert new Account(Name='Test Account');

账户插入成功,没有错误。

event-handling salesforce apex
1个回答
0
投票

错误

系统类型异常 Magazine__c

不允许 DML 操作 INSERT

显示平台事件触发器正在尝试对 Magazine__c 对象执行 DML 操作,但失败。 当自动化用户没有必要的权限将记录插入此对象时,通常会发生这种情况。

解决方案1: 检查自动化用户的权限。确保该用户具有对 Magazine__c 对象执行 DML 操作所需的权限。

解决方案2: 如果解决方案 1 不适合您,请考虑使用其他方法,例如计划作业或可以使用适当的用户权限运行的未来方法。

© www.soinside.com 2019 - 2024. All rights reserved.