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

レコードの更新/挿入

upsert 操作を使用すると、既存のレコードの挿入または更新を 1 つのコールで実行できます。upsert ステートメントまたはデータベースメソッドでは、レコードがすでに存在しているかどうかを確認するために、レコードの ID またはカスタム外部 ID 項目値 (指定されている場合) をレコードを照合するキーとして使用します。
  • キーが一致しない場合、新規オブジェクトレコードが作成されます。
  • キーが一度だけ一致したら、既存のオブジェクトレコードが更新されます。
  • キーが複数回一致する場合は、エラーが生成され、オブジェクトレコードは挿入も更新もされません。

カスタム項目に、項目定義の一部として [ユニーク][「ABC」と「abc」を値の重複として扱う (大文字と小文字を区別しない)] 属性が選択されている場合のみ、カスタム項目による照合では大文字と小文字を区別しません。この場合、「ABC123」は「abc123」と一致します。詳細は、「カスタム項目の作成」を参照してください。

メモ

次の例では、以前 Bombay となっていた市に所在するすべての既存取引先の市の名前を更新し、さらに、San Francisco に所在していた新規取引先を挿入します。

DmlException の処理についての詳細は、一括 DML 例外処理を参照してください。

メモ

次の例では、Database.upsert メソッドを使用して、渡されるリードのコレクションを更新/挿入します。この例では、レコードの部分処理を許可しています。つまり、一部のレコードが処理に失敗した場合でも、残りのレコードは引き続き挿入または更新されます。また、結果を反復処理して、正常に処理された各レコードに新しい ToDo を追加します。ToDo sObject は、リストに保存され、その後一括挿入されます。この例の後に、この例をテストするテストメソッドを含むテストクラスが続きます。

upsert を外部 ID と一緒に使用すると、コード内の DML ステートメントの数が減少し、ガバナ制限に該当しないようにします (実行ガバナと制限についてを参照)。この次の例では、納入商品と商談品目間の一対一の関係を維持するために、Asset オブジェクトの upsert と外部 ID 項目 Line_Item_Id__c を使用します。

このサンプルを実行する前に、Asset オブジェクト上に Line_Item_Id__c という名前でカスタムテキスト項目を作成し、外部 ID としてマークします。カスタム項目についての詳細は、Salesforce オンラインヘルプを参照してください。

メモ