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

问题描述 投票:1回答:2

我正在尝试使用父自定义对象的外部ID将记录插入子自定义对象。我几乎清楚如何在父对象中设置外部ID字段,但与如何在子对象中设置外键非常困惑。我将在此处附上图片,其中包含有关主定制对象和子定制对象的详细信息。我应该添加到子自定义对象中以将其记录链接到父对象。

这也是我从stackoverflow的另一篇文章中获得的代码,但是在我的情况下不起作用

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;

enter image description here

salesforce apex custom-object
2个回答
1
投票

Ext。 ids打算在集成中使用,Data Loader ...它们也可以在Apex中使用,但是语法看起来有点可笑。如果您必须保存查询或想去“亲爱的销售人员,我不记得是否已经保存了该对象,我知道唯一标识符是123,请自己弄清楚是否需要插入或更新”,请在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是对另一个对象的引用(例如,具有外部ID或查询结果),类似于编写SELECT FirstName, Email, Account.Name FROM Contact

在Apex中,它必须作为对象引用(因此,使用new关键字进行查询或作弊,只是在内存中创建它。您实际上不会保存该“父对象”)。在诸如数据加载器之类的东西中,您可以映射myCsvExtIdColumn -> sumchans__City_Master__r.sumchans__City_Name_Ext_Id__c

之类的值

1
投票
改为

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

如果要将外键与DBMS和关系DBMS相关联,则需要在子对象中创建lookup Relationship类型字段。在那里,您需要在Related To字段中分配父对象。

© www.soinside.com 2019 - 2024. All rights reserved.