Salesforce Sales force触发器用于插入更新的\u字段\u无效
下面的代码在VisualForce页面上一次更新/插入一条记录时工作正常,收到错误“Insert failed….用于插入更新的插入字段无效,使用数据加载器时无法在插入调用中指定Id”(错误指向代码“Insert amcRecord”)。有人知道怎么修理吗Salesforce Sales force触发器用于插入更新的\u字段\u无效,salesforce,Salesforce,下面的代码在VisualForce页面上一次更新/插入一条记录时工作正常,收到错误“Insert failed….用于插入更新的插入字段无效,使用数据加载器时无法在插入调用中指定Id”(错误指向代码“Insert amcRecord”)。有人知道怎么修理吗 trigger Status on Cl__c (after insert, after update) { List<AMC__c> amcRecord = new List<AMC__c>();
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;
}
}
}
Cl______c上的触发器状态(插入后、更新后)
{
List amcRecord=新列表();
用于(Cl_u c cls:Trigger.new)
{
Cl\uu c oldcls=Trigger.oldMap.get(cls.Id);
如果(cls.Status\uu c=='Completed'&(oldcls.Status\uu c!='Completed'))
{
AMC__cnewamc=新的AMC__c();
newAMC.Cl_uuc=cls.ID;
newAMC.Default_uuc=true
amcRecord.add(newAMC)
插入amcRecord;
}
}
}
已更改
insert amcRecord;
到
它现在似乎正在工作。amcRecord是一个列表,不是单个项目,但您正在为请求中的每个项目调用insert[对于UI而言,这将仅为1,但对于数据加载器,最多为200。您需要在for(…Trigger.new)循环完成后将insert 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;
}
Cl______c上的触发器状态(插入后、更新后)
{
List amcRecord=新列表();
对于(Cl__CCLS:Trigger.new)
{
Cl\uu c oldcls=Trigger.oldMap.get(cls.Id);
如果(cls.Status\uuu c=='Completed'&(oldcls.Status\uu c!='Completed'))
{
AMC__cnewamc=新的AMC__c();
newAMC.Cl_uuc=cls.ID;
newAMC.Default_uuuc=true;
amcRecord.add(newAMC);
}
}
插入amcRecord;
}
您不应该在循环内执行DML。如果您尝试插入已插入的记录,则会出现此异常
Account a =new Account();
a.name='Hello';
insert a;
insert a;
Account a =new Account();
a.name='Hello';
insert a;
insert a;