Ext. Идентификаторы предназначены для использования в интеграциях, загрузчик данных ... Их можно использовать и в Apex, но синтаксис выглядит немного забавно. Используйте их в Apex, если вы хотите сэкономить на запросах или хотите go "Уважаемые сотрудники отдела продаж, я не помню, сохранил ли я этот объект уже, я знаю, что уникальный идентификатор равен 123, go выясните, нужно ли ему вставлять или обновить ".
Если вы вставляете родителя и потомка в одну и ту же транзакцию - просто используйте идентификатор, сгенерированный в родительской записи. Если они разделены, какое-то время go вы сделали это:
insert new sumchans__City_Master__c city = new sumchans__City_Master__c(Name=Vancouver',
sumchans__PROVINCE__c = 'BC',
sumchans__City_Name_Ext_Id__c = 'Vancouver'
);
Затем в другой транзакции вы можете сделать это без запроса:
sumchans__City_Stat__c cityStat = new sumchans__City_Stat__c(Name = 'Vancouver',
sumchans__ON_BILLINGS__c = 50,
sumchans__City_Master__r = new sumchans__City_Master__c(
sumchans__City_Name_Ext_Id__c='Vancouver'
)
);
insert cityStat;
Обратите внимание, что я использовал __r
вместо __c
. __c
будет вашим реальным внешним ключом, полем Id, 15 или 18 символов. __r
будет ссылкой на другой объект (например, с ext. Id или результатом запроса), аналогично записи SELECT FirstName, Email, Account.Name FROM Contact
.
В Apex это должно быть как ссылка на объект (так что запрос или обманывать с ключевым словом new
, просто чтобы создать его в памяти. На самом деле вы не сохраните этот «родитель»). В таких вещах, как загрузчик данных, вы можете отображать значения немного как myCsvExtIdColumn -> sumchans__City_Master__r.sumchans__City_Name_Ext_Id__c