Newer Version Available
外部 ID を使用したレコードの関連付け
親レコードのカスタム外部 ID 項目を使用して関連レコードを追加します。レコード ID を使用する代わりに、外部 ID 項目を使用してレコードを関連付けます。関連レコードを別のレコードに追加できるのは、主従関係や参照関係など、関与するオブジェクトの関係が定義されている場合のみです。
外部 ID を使用してレコードをその親レコードに関連付けるには、親オブジェクトに外部 ID とマークされたカスタム項目が必要です。外部 ID 値のある親 sObject を作成し、リンクするレコードにネストされた sObject としてこのレコードを設定します。
この例では、新しい商談を既存の取引先に関連付ける方法を示します。この取引先には、MyExtID という名前のテキスト型の外部 ID 項目があります。新しい商談を挿入する前に、Opportunity.Account 関係項目を使用して、ネストされた sObject として取引先レコードをこの商談に追加します。Account sObject には外部 ID 項目のみが含まれます。
1Opportunity newOpportunity = new Opportunity(
2 Name='OpportunityWithAccountInsert',
3 StageName='Prospecting',
4 CloseDate=Date.today().addDays(7));
5
6// Create the parent record reference.
7// An account with this external ID value already exists.
8// This sObject is used only for foreign key reference
9// and doesn't contain any other fields.
10Account accountReference = new Account(
11 MyExtID__c='SAP111111');
12
13// Add the nested account sObject to the opportunity.
14newOpportunity.Account = accountReference;
15
16// Create the opportunity.
17Database.SaveResult results = Database.insert(newOpportunity);上記のサンプルは挿入操作を実行しますが、更新または更新/挿入を実行するときも外部 ID 項目を使用して sObject を関連付けることができます。親レコードが存在しない場合は、個別の DML ステートメント、あるいは 「外部キーを使用して 1 つのステートメントで親レコードと子レコードを作成する」に示すものと同じ DML ステートメントを使用して作成できます。