このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

テーブルアクション「以下の条件で削除...」 (Delete if..) は、データベーステーブルからデータを条件付きで削除する場合に使用されます。データベース テーブル アクション ダイアログボックスからこのアクションを定義することができます。(次を参照してください: データベーステーブルアクション設定)。 例えば、ソースからのデータ XML を ターゲットデータベースにマッピングする際、 ソース XML 内の特定の条件が、ターゲットデータベースの記録 (通常、 主キーの値)内のフィールドに対して同じかをチェックするために、「以下の条件で削除...」 条件を構成することができます。「以下の条件で削除...」 条件が true の場合、(つまり、 2つのフィールドが等しい場合) データベースの記録は、マッピングが実行されると削除されます。

 

メモ:「以下の条件で削除...」 テーブルアクションをデータベース テーブル アクション ダイアログボックス内で使用することのできる 「子テーブル内のデータの削除」 オプションと混合しないように注意してください。 「以下の条件で削除...」 テーブルアクションは、アクションが定義されているテーブルのみに影響を与え、他のテーブルには影響はありません。

 

この例は、データベース テーブルからデータを条件付きで削除する方法、また削除条件の結果をベースにして同じデータベーステーブルにレコードを挿入する方法を説明します。

 

この例は以下のファイルを使用します:

 

altova-cmpy-extra.xml — データベースに挿入されるソースデータを含んでいます。

Altova_Hierarchical.xsd — 上記のインスタンスファイルを検証するために使用されるスキーマです。

altova.mdb — 更新されるターゲットデータベースです。

 

全てのファイルは <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\ フォルダー内にあります。 下の説明では、簡素化のために、これらのファイルへの完全なパスは省略されています。

 

この例のマッピングは、サンプルデータベースファイルを変更します。元のデータベースをバックアップし、下記のステップを開始する前に、新規のコピーを起動することが奨励されます。することが奨励されます。バックアップを作成することにより、元の例が上書きされず、下記と同じ結果を得ることができます。詳細に関しては、次を参照してください:データベースを変更するマッピングの実行

 

このマッピングの目的は以下の通りです:

 

同じ PrimaryKey を持つ、 person レコードが、ソース XML と ターゲット Person テーブル内両方に存在する場合、これらは Person テーブルから削除されなければなりません。

ソース XML からの全てのレコードは、 Person テーブルに挿入される必要があります。

 

マッピングの目的を達成するために、以下のステップを行います。

 

ステップ 1: ソース XML コンポーネントを挿入する

「挿入」 メニューから、「XML スキーマ/ファイル」をクリックして、Altova_Hierarchical.xsd を参照します。インスタンスファイルを与えるように問われると、altova-cmpy-extra.xml を参照してください。

 

ステップ 2: ターゲットデータベースを挿入する

「挿入」 メニューから、「データベース」をクリックして、 altova.mdb に接続するためにウィザードのステップを行ってください。(次を参照してください: 例: "altova.mdb" データベースをマッピングに追加する)。

 

ステップ 3: 接続を描く

下に表示されるとおりマッピングの接続を描きます。

mf_db_deleteif_01

 

ステップ 4: 「以下の条件で削除...」 「残りを挿入」" アクションを構成する

1.ターゲットコンポーネントで、 「Person」 テーブルの横の アクション: 挿入 ( tbl-act-icon ) ボタンをクリックします。

2.「レコードに対するアクション」の横の、「以下の条件で削除...」 を選択します。これは、データベース テーブルアクションを 条件月の 「アクションの削除」に変更します。つまり、 条件が満たされる場合のみ、現在のレコードは削除されます (次のステップを参照してください)。

3.「PrimaryKey」の横の、値 「一致」 を選択します。これにより、更新条件を定義します。つまり、 下に表示されるとおり、データベースの記録は、 「PrimaryKey」 値が、マッピングより与えられる 「PrimaryKey」 値に等しい場合、削除されます。

mf_db_deleteif_02

4.任意で、NULL equal チェックボックスを選択します。 このサンプルでは、ソース XML内の PrimaryKey フィールド、またはデータベース内の PrimaryKey フィールドに null 値が含まれていないため、このチェックボックスには関連性はありません。 しかしながら、データに null 値が含まれており、このような値を等価として扱うには、場合、このチェックボックスをチェックする必要があます。それ以外の場合は、希望しない結果が生成される場合があります。 詳細に関しては、データベーステーブルアクション内の Null 値の処理を参照してください。

5.「アクションの追加」をクリックします。これは、新規のアクションを既存の「以下の条件で削除...」 アクションの右に追加します。新規のアクションを「残りを挿入」として構成します :

 

mf_db_deleteif_03

上のイメージでは、データベース テーブル アクションは、マッピングの目的に従い構成されています。つまり、「以下の条件で削除...」(Delete If..) 条件が満たされる場合のみ、レコードは削除されます。それ以外の場合、 挿入されます。オプション 「マップされた値」 は、マッピングからの値がレコードの全てのフィールドを作成するために使用されることを指定します。

 

6.ダイアログボックスを閉じるために「OK」をクリックします。マッピングの背景で、アクション: 挿入 tbl-act-icon ボタンが、アクション: 削除; 挿入 ( mf_db_ic_action_delete_insert ) ボタンに変更されていることに注意してください。 これは、削除と挿入アクションが、このテーブルのために構成されることを示します。

 

ステップ 5: マッピングをプレビューし、データベースを更新する

マッピングをプレビューするために「出力」タブをクリックします。データベースに対して実行されるアクションを含む、 SQL スクリプトが生成されます。このスクリプトはプレビューのためであり、データベースをまだ変更していません。データベースに対してスクリプトを実行するには以下を行います:

 

「出力」 メニューから、「SQL-スクリプトの実行」.をクリックします。

 

メモ:MapForce から直接 SQL スクリプトを実行することは、データベースを更新する方法のひとつです。次も参照してください: データベースを変更するマッピングの実行

 

MapForce 内の DB クエリタブ内の 「Person」 テーブルを開くと (次を参照してください: データベースの参照とクエリ)、マッピングの結果は以下の通りです:

 

XML ファイル内に対応する主キーを持つすべてのデータベースの記録は、削除されました。 例は、 主キー1、 2、 3、 4、 および 5 を持つレコードです。

XML ファイル内に対応するキーをもたない全てのデータベースの記録は、影響を受けず、変更されていません。例は、 主キー6、 7、 8、 9、 10、 11、 12、 および 13 を持つレコードです。

新規のレコードが (データベース内でキーが存在していない箇所である) 「Person」 テーブルに挿入されました。 例は、 主キー 30 と 31 を持つレコードです。

mf_db_deleteif_04

データベースを更新後の  「Person」 テーブル

(C) 2019 Altova GmbH