销售人员触发INVALID_FIELD_FOR_INSERT_UPDATE

时间:2017-05-19 13:27:13

标签: salesforce

下面的代码在一次更新/插入Visual Force Page 1记录时工作正常,在使用数据加载器时收到错误'插入失败.... INVALID_FIELD_FOR_INSERT_UPDATE,无法在插入调用中指定Id'(错误指向代码, '插入amcRecord')。有谁知道如何解决?

NULL amount

3 个答案:

答案 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;  

现在似乎正在运作。