MERGE ステートメント

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データソースとターゲット > MapForce とデータベース > データをデータベースにマップする >

MERGE ステートメント

データベース テーブルを更新し、データを挿入する特定のマッピングに関しては、 MapForce は、データベースに対して実行される MERGE ステートメントをマッピングランタイムも生成する可能性があります。(次も参照してください: 「以下の条件で更新し、残りを挿入」 アクション)。 実行エンジンが MapForce である必要は必ずしもありません。次を参照してください: データベースを変更するマッピングの実行

 

MERGE ステートメント は、次の データベース 型によりサポートされています:

 

SQL Server 2008 および以降
Oracle
DB2
Firebird

 

INSERT と UPDATE ステートメントを1つにまとめるため、MERGE ステートメントは、データベース サーバーの呼び出しの回数を減らします。また、MERGE ステートメントの場合、整合性は、データベースによりチェックされます。データベース 型を検出すると、 MapForce は、自動的に MERGE ステートメントを作成します。MapForce による MERGE ステートメントの生成を手動で影響することはできません。

 

マッピングがランタイムにデータベース MERGE ステートメントを実行するかを確認します (INSERT と UPDATE ステートメントの組み合わせの適用に対して):

 

1.「以下の条件で更新する...」「残りを挿入」 アクションを使用するマッピングを作成します。例えば、次を参照してください:「以下の条件で更新し、残りを挿入」 アクション
2.マッピングをプレビューするには、 「出力」 タブをクリックします。

 

MERGE がデータベース 型によりサポートされている場合、 生成された SQL スクリプトは、 MERGE ステートメントを含みます。例:

mf_db_merge_08

 

データベース 型が MERGE をサポートしない場合、 生成された SQL スクリプトは、 UPDATE ステートメントのみを含みます。「以下の条件で更新する...」 条件が満たされている場合のみ、実行されるため、( マッピングの実行前には未知である) INSERT ステートメントは、プレビューでは表示されません。

 

メモ

MapForce はサポートされるデータベースからを検知すると、 MERGE ステートメントを自動的に作成します。 MapForce が MERGE ステートメントを作成するか否かを手動で影響することはできません。
親子リレーションシップを持つ複数のテーブルを更新する場合、マージは「リーフ」テーブルのためにのみ作成されます。「リーフ」テーブルはマップされている最も深い子テーブルです。例えば、下のマッピングでは、「以下の条件で更新する...」「残りを挿入」  アクションが Users テーブルと Addresses テーブル両方のために定義されています。しかしながら、MERGE ステートメントはリーフテーブル Addresses のためにのみ生成されます。 親テーブル Users は、MERGE  の代わりに UPDATE または INSERT ステートメントを取得します。

mf_db_merge_07

ステートメントに関しては、 「バルク転送」 オプション (次を参照してください: バルク転送 (MapForce Server) は、 ODBC と JDBC データベース接続のためにのみによりサポートされています。

(C) 2019 Altova GmbH