UPSERT ステートメント
UPSERT ステートメントは、既存のレコードを更新するか、既存のレコードが識別されない場合は新しいレコードを作成します。
Upsert の設定
Upsert は、Salesforce で明示的に外部キーになるように定義されたフィールドでのみ実行できます。次のクエリで示すように、ExternalIdColumn というカラムにこのフィールドの名前を指定する必要があります。
UPSERT INTO Lead (FirstName, LastName, Company, External_Id_Column__c, ExternalIdColumn)
VALUES ('Bob', 'Thorton', 'Universal Pictures', 12345, 'External_Id_Column__c')
ExternalIdColumn を表示させるには、Salesforce の接続プロパティを変更して、PseudoColumns フィールドを引用符なしの値'*=*' に設定します。
UPSERT ステートメントは、既存のレコードを更新するか、既存のレコードが識別されない場合は新しいレコードを作成します。
UPSERT 構文
UPSERT 構文は挿入の構文と同じです。Salesforce はVALUES 句で指定された入力を使用して、レコードがすでに存在するかどうかを判断します。レコードが存在しない場合は、レコードの挿入に必要なすべてのカラムが指定される必要があります。テーブル固有の情報については、データモデル を参照してください。
UPSERT INTO <table_name>
( <column_reference> [ , ... ] )
VALUES
( { <expression> | NULL } [ , ... ] )
<expression> ::=
| @ <parameter>
| ?
| <literal>
UPSERT のSSIS 固有の制限
外部ID の使用
Salesforce でのUPSERT 操作には、External ID として明示的に定義されたフィールドが必要です。SSISで は、マッチングに使用するフィールドをExternalIdColumn 擬似カラムを通じて指定する必要があります。 この値は、External ID としてマークされたSalesforce テーブル内のカラムの名前と一致する必要があります。
Id カラムをキーとして使用する場合
External ID を使用する代わりにId カラムをマッピングすることを選択した場合、動作は入力値によって決まります。
- NULL 値:新しいレコードを挿入
- 有効なSalesforce ID:レコードを更新
- 無効または不足したID:エラーになります
UPDATE またはDELETE 操作を実行するには、Salesforce Id が送信先マッピングに含まれている必要があります。そうでなければ、"The primary key must be specified to delete a row." などのエラーで操作が失敗します。
SQL コマンドモードなし
SSIS Salesforce 送信先コンポーネントは、SQL コマンドデータアクセスモードをサポートしていません。すべての操作は、UI とテーブルマッピングのみを使用して設定する必要があります。