5.5.3 抽出定義文
データ連動の対象にする表の抽出条件を定義します。
- 〈この項の構成〉
(1) 形式
{{ extract 認可識別子.表識別子({ 列名〔{{,列名 }}…〕|* })
to 更新情報名
key|ukey(列名〔{{,列名 }}…〕)〔check {not_null_unique|unique|none}〕}}…
(2) オペランドの説明
-
extract 認可識別子.表識別子({ 列名〔{{,列名 }}…〕|* })
抽出する表とその表から抽出する列を指定します。
一つの抽出条件に対して,一つのextract文を指定します。一つのextract文で指定できる認可識別子.表識別子は1種類だけです。
一つの表を複数の抽出条件で抽出する場合には,複数のextract文を指定します。一つのextract文で指定できる列名は,4000個までです。
- 認可識別子.表識別子
-
指定する列が含まれている表の,認可識別子.表識別子を指定します。指定する表は実表でなければなりません。
- 認可識別子
-
更新情報を抽出する表の,認可識別子を指定します。
- 表識別子
-
更新情報を抽出する表の,表識別子を指定します。
- 列名
-
抽出する列名を指定します。列名は,最大4000列 指定できます。
繰返し列は,要素を指定しないときにだけ指定できますが,配列列は指定できません。
同じ列名を重複して指定することもできます。ただし,key句で指定する列名は,重複して指定できません。extract文で指定した列の順序が,更新情報のフィールドの順序になります。更新情報のフィールドとは,更新情報中にあり,抽出したHiRDBのフィールドを格納するための領域を指します。
- *
-
*を指定すると,抽出対象表のすべての列は,並び順を変えないでそのまま抽出されます。
-
〜〈1〜8文字の記号名称〉
抽出した更新情報に対する更新情報名を指定します。
更新情報名は,抽出定義中のすべての抽出文で一意に指定してください。
-
{key|ukey}(列名〔{{,列名 }}…〕)
マッピングキーにする列名を指定します。更新される可能性があるかどうかで,key句かukey句にするかを決定します。
マッピングキーにできる列のデータ型については,「4.3.3(1) 抽出側DBがHiRDBの場合のマッピングキー」を参照してください。
- key 列名
-
マッピングキーにする列名を指定します。key句で指定した列に対しては,更新しないでください。
- ukey 列名
-
更新される可能性があるマッピングキーにする列名を指定します。
なお,マッピングキーが更新されるとデータ連動回復機能は使用できません。
列名は,抽出側及び反映側のHiRDBのバージョンが09-50以降の場合は最大64個,その他の場合は最大16個指定できます。ただし,同じ列名を重複して指定できません。
指定する列名は,extract文で指定されている列名でなければなりません。extract文で*を指定している場合は,抽出対象表の構成列のどれかを指定してください。
-
check {not_null_unique|unique|none}
マッピングキー列に対するユニークチェックを行うときの条件を指定します。ユニークチェックの内容を次の表に示します。条件を満たしていなかった場合,抽出定義プリプロセス処理で定義エラーが発生します。この句を省略した場合は,hdeprepコマンドの-kオプションの指定に従ってチェックされます。
表5‒8 ユニークチェックの内容 チェック項目
チェック内容
インデクス種別
次のどれかのインデクス種別であること。
-
ユニークインデクス
-
ユニーククラスタインデクス
-
プライマリインデクス
-
プライマリクラスタインデクス
インデクス構成列
マッピングキー構成列だけであること。
- not_null_unique
-
抽出対象表に対して,「表5-8 ユニークチェックの内容」の内容を満たすインデクスが定義されていること,及びそのインデクスの構成列がNOT NULL属性であることを確認します。
- unique
-
抽出対象表に対して,「表5-8 ユニークチェックの内容」の内容を満たすインデクスが定義されていることを確認します。NULL値に関するチェックは行わないため,データの一意性は抽出側DBを更新するユーザプログラムなどで保証する必要があります。
- none
-
チェックを行いません。データの一意性は抽出側DBを更新するユーザプログラムなどで保証する必要があります。
-
(3) 注意
-
key句を指定した場合は,extract文にマッピングキー以外の列も指定してください。key句を指定したマッピングキーは更新されないため,マッピングキー列だけを指定すると抽出できません。ukey句を指定した場合は,extract文にマッピングキー列だけを指定することもできます。
-
null値データの抽出はできます。
-
認可識別子,表識別子,列名,更新情報名及び送信先識別子は大文字と小文字を区別して認識します。
-
認可識別子,表識別子,列名,更新情報名及び送信先識別子で抽出側Datareplicatorの予約語と同じ名称を指定する場合,名称を「 " 」(ダブルクォーテーション)で囲んで指定してください。抽出側Datareplicatorの予約語については,「付録B Datareplicator定義の予約語」を参照してください。
-
extract文で指定する列名には,マッピングキーになる列名を重複して指定できません。
-
key句を指定しているときにマッピングキーを更新すると,更新後のデータをキーとして反映側で処理されるため,反映処理でエラー(キーが一致するデータなし)又は意図したものとは異なる行に対して反映が実行されることになります。マッピングキーは更新しないでください。