Skip to main content

Tables and Columns

UPSERT Query Behavior

UPSERT Settings Enabled

UPSERT By Id

UPSERT Settings リストでUPSERT by を選択し、テーブルのキーカラムを選択すると、コネクタは一致するキー値を持つレコードが存在するかどうかを判定するためにクエリを発行します:
一致した場合は更新が行われ、一致しない場合は挿入が行われます。 入力XML にキーカラムが存在しない場合、レコードは常に挿入されます。

UPSERT By Non-key Column

UPSERT Settings リストでUPSERT by を選択し、非キーカラムを選択すると、コネクタはそのカラムに一致する値を含むレコードが存在するかどうかを、SELECT で主キーを対象として判定するためにクエリを発行します(以下の例はOrders テーブルへのUPSERT を示しています):
SELECT クエリは、SELECT ステートメントにおいて常にテーブルのキーカラムを対象とします。一致が成功した場合、入力XML のデータがデータソースに更新されます。一致しない場合は、代わりにレコードが挿入されます。
選択したUPSERT by カラムが入力で指定されていない場合、次のクエリに示すように、NULL 値でルックアップが使用されます。

Using a Custom Query

UPSERT Settings リストでQuery to select UPSERT key を選択すると、UPSERT キーを判定するためのカスタムクエリを記述できます。これにより、単一のカラムの一致だけでなく、より複雑なロジックを使用してルックアップを実行できます。次のクエリを考えてみましょう:
この例では、UPDATE に適切な条件を提供するために、テーブルのキーカラムを選択する必要があります。@OrderID 構文は、一致する入力XML から値を参照するために使用されます。静的な値を使用することもできます。'Active' を囲む引用符は、この句が静的な値を使用していることを示します。 ここでも、キーカラムの一致が成功すると、更新リクエストの形成に使用されます。一致しない場合は、レコードが挿入されます。
データベースへの挿入の動作について疑問がある場合は、UPSERT 試行の.log ファイルを確認してください。動作を導くために使用されたロジックの完全な内訳がログファイルに送信されます。

UPSERT Settings Disabled

カラムのUPSERT 動作を無効にするには、UPSERT Settings ダイアログを開き(宛先カラムを右クリックしてUPSERT Settings を選択します)、Enable UPSERT settingsOFF に切り替えて、Apply をクリックします。 UPSERT 設定が無効の場合、コネクタはINSERT クエリのみを発行します。入力マッピングのコードビューを確認すると、テーブルのaction 属性がinsert になっていることがわかります:
主キーが存在するかどうかにかかわらず、テーブルに発行されるすべてのクエリは挿入として扱われます。受信したすべてのレコードをテーブルに対して更新するには、次のスニペットに示すように、このアクションキーワードをupdate に設定できます。
アクションがupdate として定義されている場合、アプリケーションはテーブルのキーカラム(例えばId)が存在することを期待します。キーカラムが提供されていない場合、UPDATE コマンドの効果は対象のデータベースタイプによって異なる可能性があるため、予想より多くの行が変更されたり、まったく変更されなかったりする場合があります。

Example Arc Flow