Skip to main content

テーブルとカラム

UPSERT クエリの動作

UPSERT スライダーをON に設定

Id によるUPSERT

入力XML にキーカラムが存在する場合、一致するキーを持つレコードが存在するかどうかを判定するために、データベースにクエリが発行されます。
一致した場合は更新が行われ、一致しない場合は挿入が行われます。 入力XML にキーカラムが存在しない場合、レコードは常に挿入されます。

非キーカラムによるUPSERT

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

カスタムクエリの使用

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

UPSERT スライダーをOFF に設定

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

Arc フローの例