S.B.S. Salesforce技術ブログ

教えて921さん!

Upsert を使用してレコードを作成または更新しよう

こんにちは!しのはらです。
今回は、Upsert を使用してレコードを作成または更新する方法を学んだので、ご紹介していきます!

Upsertとは、レコードが存在してなければInsert(新規作成)を行い、レコードがあればUpdate(更新)を行うというsalesforceの処理です。
今回はDataloderを使ってUpsertしますが、データインポートウィザードでも一致条件を指定することでUpsertできます。「名前」をキーにUpsertできるので、件数が少ない場合はこちらを使った方法も簡単でおすすめです!


「本」というカスタムオブジェクトに、以下の2つのレコードをタイトルが重複しないように作成/更新します。

1. IdをキーにしてUpsert(失敗例)

Idをキー項目にしてUpsertします


結果は次のようになりました。

タイトルが「はてなA」のレコードが2個になりました。

Upsertは、あくまでキーに指定した項目(IDや外部キー)が存在しているかを判断しながら作成/更新をしていきます。 Idは自動で生成される番号なので、タイトルが同じでも以下の様に違うIdが割り振られます。
つまり、Id自体は別の値となるので、同じレコードは存在しないと判断され、重複レコードができてしまうようです。

そこで、外部キーを使います。
外部キーは、Idと同様にレコードを識別するために使われるのですが、Idと違い任意の文字列を自分で設定することができます。 つまり、Upsertのキーに特定の項目を指定すれば、その項目の内容が重複していないかをチェックしてくれるというわけです!

2. 外部キー項目をキーにしてUpsert(成功例)

まず、外部キーを設定します。 重複させたくないテキスト型の「タイトル」項目を、下図のように設定し、一意の外部キーにします。

では作成した外部キー項目をキーにしてUpsertしましょう!

すると結果は次のようになりました。

はてなA」に関するレコードは更新され、「はてなB」に関するレコードは新しく作成されました!


外部キーは大量のデータ処理の場合などにも役に立つので、特徴や使い方を覚えておくといいかもしれないですね。 ちなみに外部キーを使った更新は、DataloaderのUpdateでは行えないのでご注意ください!
では、また!