在顶端代码中,我写了2个触发器。我有两个对象A和B,我需要在创建A对象时创建B对象的记录。例如:当创建对象A的1个记录时,然后创建对象B的4个记录。我已经写了2个触发器1用于在创建A对象时在B对象中的一些字段(这是在插入之前,在更新之前)触发器和2个触发器是在创建A的记录时创建对象B的记录(这是在插入之后,在更新之后)触发器。
但当我创建对象A的I记录时,然后创建了4个记录id。但当使用Apex Data Loader创建对象A的记录时,此时将为A创建2条记录,但对于B对象仅创建4条记录。这是为A对象的第二条记录创建的。
我将代码更改为
对于(对象e: Trigger.new){
for(){为B对象创建4条记录}}
当我这样做的时候,我得到了这个错误
插入失败。第0行的第一个异常,id为abcdef12345;第一个错误: INVALID_FIELD_FOR_INSERT_UPDATE,无法在插入调用中指定Id : Id
有人能帮我解决这个问题吗?感谢Anu
发布于 2012-06-07 15:49:34
错误消息告诉您无法为ID字段赋值。ID字段受保护,其值由Salesforce.com自动生成。
从insert语句中删除ID字段。
发布于 2012-06-07 15:55:03
在before insert触发器期间,Id还没有填充,所以您可能引用它太早了,可能试图将B记录指向A记录。另一个问题是试图给B.Id赋值。这两个代码问题如下所示:
trigger trigA on A__c (before insert) {
List<B__c> listB = new List<B__c>();
for (A__c a : trigger.new) {
B__c b = new B__c();
B__c.reference_to_A__c = a.Id; // <-- Wrong! a.Id isn't populated yet in before insert
B__c.Id = '...'; // <-- Wrong! Salesforce generates the Id field for you
listB.add(b);
}
insert listB;
}
多看看你的代码会很有帮助的。
https://stackoverflow.com/questions/10929954
复制相似问题