我有一个在平台事件上触发的触发器。活动很简单。它有一个资产 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');
账户插入成功,没有错误。
错误
系统类型异常 Magazine__c
不允许 DML 操作 INSERT显示平台事件触发器正在尝试对 Magazine__c 对象执行 DML 操作,但失败。 当自动化用户没有必要的权限将记录插入此对象时,通常会发生这种情况。
解决方案1: 检查自动化用户的权限。确保该用户具有对 Magazine__c 对象执行 DML 操作所需的权限。
解决方案2: 如果解决方案 1 不适合您,请考虑使用其他方法,例如计划作业或可以使用适当的用户权限运行的未来方法。