この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

外部 ID を使用してレコードを挿入/更新 (Upsert) する

指定された外部 ID 項目の値に基づいて、レコードを作成するか、既存のレコードを挿入/更新 (Upsert) するには、SObject Rows by External ID リソースを使用します。
  • 指定された値が存在しない場合、新しいレコードが作成されます。
  • 指定された値のレコードが存在する場合、リクエストボディに指定された項目値が更新されます。
  • 値が一意でない場合、REST API によって、一致するレコードのリストと共に HTTP 状況コード 300 が返されます。

以降のセクションでは、外部 ID リソースを使用して外部 ID でレコードを取得する方法とレコードを Upsert する方法を説明します。

新規レコードの Upsert

この例では、PATCH メソッドを使用して新規レコードを挿入します。外部 ID 項目「customExtIdField__c」がすでに Account に追加されていると想定します。また、customExtIdField 値が 11999 の Account レコードがまだ存在していないと想定します。

まだ存在していないレコードを Upsert する例
JSON リクエストボディ newrecord.json ファイルの例
応答
成功時の応答は次のとおりです。

新しいレコードが作成されると、HTTP 状況コード 201 が返されます。

エラー応答
外部 ID 項目が不正な場合は、次のような応答が返されます。
詳細は、「状況コードとエラー応答」を参照してください。

Id を外部 ID として使用した新規レコードの挿入

この例では、特殊なケースとして POST メソッドを使用し、Id 項目が外部 ID として処理されるレコードを挿入します。Id の値は null であるため、要求から除外されます。このパターンは、異なる外部 ID によって複数のレコードを Upsert するコードを記述していて、個別のリソースを要求したくない場合に役立ちます。Id を使用する POST は、API バージョン 37.0 以降で使用できます。

まだ存在していないレコードを挿入する例
JSON リクエストボディ newrecord.json ファイルの例
応答
成功時の応答は次のとおりです。

レコードが作成されると、HTTP 状況コード 201 が返されます。

既存のレコードの Upsert

この例では、PATCH メソッドを使用して既存のレコードを更新します。外部 ID 項目「customExtIdField__c」がすでに Account に追加されていて、customExtIdField 値が 11999 の Account レコードがすでに存在すると想定します。要求では updates.json を使用して更新する項目値を指定します。

既存のレコードを Upsert する例
JSON リクエストボディ updates.json ファイルの例
応答の例 (JSON)
既存のレコードが更新される場合、HTTP 状況コード 204 が返されます。
エラー応答
外部 ID 値が一意でない場合、HTTP 状況コード 300 が返され、さらにクエリに一致したレコードのリストが返されます。エラーについての詳細は、「状況コードとエラー応答」を参照してください。
外部 ID 項目が存在しない場合、エラーメッセージとコードが返されます。

レコードの Upsert と外部 ID との関連付け

オブジェクトでリレーションを使用して他のオブジェクトを参照する場合、REST API を使用し、レコードの挿入/更新の両方と、さらに外部 ID を使用した別のオブジェクトの参照も行うことができます。

次の例では、レコードを作成し、外部 ID を介して親レコードに関連付けます。次の条件を想定します。
  • Merchandise__c カスタムオブジェクトには、外部 ID 項目 MerchandiseExtID__c がある。
  • Line_Item__c カスタムオブジェクトには、外部 ID 項目 LineItemExtID__c と、Merchandise__c へのリレーションがある。
  • MerchandiseExtID__c 値が 123 の Merchandise__c レコードが存在する。
  • LineItemExtID__c 値が 456 の Line_Item__c レコードは存在しない。これは作成され、Merchandise__c レコードに関連付けられるレコードです。
レコードを Upsert して関連オブジェクトを参照する例
JSON リクエストボディ new.json ファイルの例
関連する Merchandise__c レコードは、Merchandise__c の外部 ID 項目を使用して参照されます。
応答の例 (JSON)
作成が成功すると、HTTP 状況コード 201 が返されます。
エラー応答
外部 ID 値が一意でない場合、HTTP 状況コード 300 が返され、さらにクエリに一致したレコードのリストが返されます。エラーについての詳細は、「状況コードとエラー応答」を参照してください。
外部 ID 項目が存在しない場合、エラーメッセージとコードが返されます。
既存のレコードの更新には次の方法を使用することもできます。たとえば、上記の例の Line_Item__c を作成した場合、別の要求を使用して関連する Merchandise__c の更新を試みることができます。
レコードを更新する例
JSON リクエストボディ updates.json ファイルの例
ここでは、MerchandiseExtID__c 値が 333 の別の Merchandise__c レコードが存在すると想定します。
応答の例 (JSON)
既存のレコードが更新される場合、HTTP 状況コード 204 が返されます。
リレーション種別が主従関係で、リレーションが親の変更を許可しないように設定されている場合、親の外部 ID を更新しようとすると、HTTP 状況コード 400 エラーとエラーコード INVALID_FIELD_FOR_INSERT_UPDATE が返されます。