0

在顶点代码中,我编写了 2 个触发器。我有 2 个对象 A 和 B。创建 A 对象时,我需要创建 B 对象的记录。例如:当创建对象 A 的 1 条记录时,然后创建对象 B 的 4 条记录。我写了 2 个触发器 1 默认情况下是创建 A 对象时 B 对象中的某些字段(这是在插入之前,更新之前)触发器和2触发器是在创建A的记录时创建对象B的记录(这是在插入之后,在更新之后)触发器。

但是当我创建对象 A 的记录时,创建了 4 个记录 ID。但是,当使用 Apex Data Loader 创建对象 A 的记录时,当时为 A 创建了 2 条记录,但为 B 对象只创建了 4 条记录。这是为 A 对象的第二条记录创建的。

我将代码更改为

for(对象 e:Trigger.new){

for(){ 为 B 对象创建 4 条记录 }}

当我这样做时,我收到了这个错误

插入失败。第 0 行的第一个异常,ID 为 abcdef12345;第一个错误:INVALID_FIELD_FOR_INSERT_UPDATE,无法在插入调用中指定 Id:[Id]

任何机构都可以帮助我解决问题。谢谢阿努

4

2 回答 2

0

在插入前触发器期间尚未填充 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;
}

查看更多代码会很有帮助。

于 2012-06-07T15:55:03.360 回答
0

错误消息告诉您无法为 ID 字段分配值。ID 字段受保护,其值由 Salesforce.com 自动生成。

从您的插入语句中删除 ID 字段。

于 2012-06-07T15:49:33.750 回答