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