如何使用外部ID工作?

时间:2011-12-19 15:44:55

标签: api salesforce apex-code

upsert如何在Salesforce API中工作?

我相信它会检查它是否存在具有唯一ID的记录。如果它可用,则更新记录,否则创建记录。

这是对的吗?

我收到以下错误

  Upsert failed. First exception on row 1; first error: DUPLICATE_EXTERNAL_ID, Asset Tag: more than one record found for external id field: [a11M0000000CwJqIAK, a11M0000000CwJvIAK]: [Asset_Tag__c]

我有一个包含项目的列表,并且没有重复的Asset_Tag值。

 system.debug('LstItem Asset_Tag__c'+LstItem );
    upsert  LstItem Asset_Tag__c;

从调试日志

   LstItem Asset_Tag__c(Item_c__c:{Scanned_By__c=005M0000000IlxyIAC, Asset_Tag__c=12149, Status__c=Active, Scan_Location__c=001M0000008GzJXIA0, Last_Scan_Date__c=2011-12-17 06:08:47}, Item_c__c:{Scanned_By__c=005M0000000IlxyIAC, Asset_Tag__c=23157, Status__c=Active, Scan_Location__c=001M0000008GzJXIA0, Last_Scan_Date__c=2011-12-17 08:26:14})

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:5)

错误消息表明,根据您提供的外部Id值,有两个匹配的记录。在这种情况下,系统不知道它应该更新哪一个,因此它失败了。

如果您查看/ a11M0000000CwJqIAK和/ a11M0000000CwJvIAK,它们将在外部ID字段中具有相同的值。您可能需要考虑对该对象的记录进行重复数据删除。