下面的代码在一次更新/插入Visual Force Page 1记录时工作正常,在使用数据加载器时收到错误'插入失败.... INVALID_FIELD_FOR_INSERT_UPDATE,无法在插入调用中指定Id'(错误指向代码, '插入amcRecord')。有谁知道如何解决?
NULL amount
答案 0 :(得分:0)
amcRecord是一个列表,而不是单个项目,但是您正在为请求中的每个项目调用insert [对于UI只有1,但对于数据加载器最多只有200。你需要在for(... Trigger.new)循环完成之后将插入amcRecord行移动到它,这样它只被调用一次,例如
trigger Status on Cl__c (after insert, after update)
{
List<AMC__c> amcRecord = new List<AMC__c>();
for (Cl__c cls: Trigger.new )
{
Cl__c oldcls = Trigger.oldMap.get(cls.Id);
if (cls.Status__c == 'Completed' && (oldcls.Status__c != 'Completed' ))
{
AMC__c newAMC = new AMC__c();
newAMC.Cl__c = cls.ID;
newAMC.Default__c = true;
amcRecord.add(newAMC);
}
}
insert amcRecord;
}
答案 1 :(得分:0)
您不应在循环内执行DML。如果您尝试插入已插入的记录,则会出现此异常。
Account a =new Account();
a.name='Hello';
insert a;
insert a;
答案 2 :(得分:-1)
已更改
insert amcRecord;
到
upsert amcRecord;
现在似乎正在运作。