2017-05-19 15 views
1

ビジュアルフォースのレコードを一度に1つのレコードに更新/挿入すると、以下のコードが正常に動作します。 '挿入に失敗しました.... INVALID_FIELD_FOR_INSERT_UPDATE、挿入呼び出しでIDを指定できません'コードを指し示す、 'insert amcRecord')。誰でも修正する方法を知っていますか?販売力のトリガーINVALID_FIELD_FOR_INSERT_UPDATE

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

それは今働いているようだ

upsert amcRecord; 

insert amcRecord; 

を変更しました。

0

amcRecordは1つのアイテムではなくリストですが、リクエスト内のすべてのアイテムに対して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; 
}