使用外部 ID 插入父子自定义对象

Insert to Parent and child custom object using external Id

我正在尝试使用父自定义对象的外部 ID 将记录插入到子自定义对象中。我几乎清楚如何在父对象中设置外部 id 字段,但对如何在我的子对象中设置外键感到非常困惑。我在这里附上图片,其中包含主自定义对象和子自定义对象的详细信息。我应该将什么添加到子自定义对象以 link 它的记录到父对象。

这也是我从 Whosebug 中的另一个 post 获得的代码,但在我的情况下不起作用

enter image description heresumchans__City_Master__c city = new sumchans__City_Master__c(Name='[![enter image description here][1]][1]Vancouver',sumchans__PROVINCE__c = 'BC', sumchans__City_Name_Ext_Id__c = 'Vancouver');
insert city;
sumchans__City_Stat__c cityStat = new sumchans__City_Stat__c(Name = 'Vancouver', sumchans__ON_BILLINGS__c = 50, sumchans__City_Master__c=new sumchans__City_Master__c(sumchans__City_Name_Ext_Id__c='Vancouver'));
insert cityStat;

改为创建查找字段。因为 External ID 字段用于引用来自另一个外部系统的 ID。

如果要将外键关联到关系型DBMS,需要在子对象中创建查找关系类型字段。您需要在 Related To 字段中分配父对象。

分机。 id 旨在用于集成、数据加载器...它们也可以用于 Apex,但语法看起来有点滑稽。如果您必须节省查询或想去 "dear salesforce, I don't remember if I saved this object already, I know unique identifier is 123, go figure it out yourself whether it needs insert or update".

,请在 Apex 中使用它们

如果您在同一个事务中插入父项和子项 - 只需使用生成的 ID 到父项记录中。如果它们是分开的,那么您刚才这样做了:

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 关键字查询或作弊,只是为了在内存中创建它。您实际上不会保存那个 "parent")。在数据加载器之类的东西中,您可以将值映射为 myCsvExtIdColumn -> sumchans__City_Master__r.sumchans__City_Name_Ext_Id__c