как работает upsert с внешним id? - PullRequest
3 голосов
/ 19 декабря 2011

Как работает upsert в Salesforce API?

Я считаю, что он проверяет, есть ли запись с уникальным идентификатором. Если он доступен, он обновляет запись, в противном случае запись создается.

Это правильно?

Я получаю следующую ошибку

  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 Ответ

5 голосов
/ 19 декабря 2011

Сообщение об ошибке указывает, что на основе предоставленного вами значения внешнего идентификатора было две совпадающие записи.В этом случае система не знает, какой из них следует обновить, поэтому происходит сбой.

Если вы посмотрите на / a11M0000000CwJqIAK и / a11M0000000CwJvIAK, они будут иметь одинаковое значение в поле внешнего идентификатора.Вы можете рассмотреть возможность дублирования записей для этого объекта.

...