Hitachi

HiRDB データ連動機能 HiRDB Datareplicator Version 10


4.3.6 繰返し列の設計

繰返し列の設計方法について説明します。

〈この項の構成〉

(1) 繰返し列データの抽出の制限

繰返し列を抽出するときには,抽出側Datareplicatorでは特別な定義は必要ありません。ただし,次に示す制限があります。

(2) 繰返し列データの反映の制限

UPDATEのSET句で更新された繰返し列データを反映するときに,次に示す条件に該当すると,反映側DatareplicatorでSQLエラー(SQLCODE=−129)になって反映できなくなります。

マッピングキーの数は必ず1以上なので,反映できるSET句の繰返し列更新項目数は最大29999です。抽出側システムで繰返し列のすべての要素を更新するなど,大量の要素データを1SQLで更新するときは,各要素単位に更新項目を指定するのではなく,列単位で更新することをお勧めします。

(3) 繰返し列をデータ連動するときの反映定義

繰返し列を反映するときの反映定義は,従来通りload文で繰返し列を含む表を反映対象として定義します。更新情報フィールド定義で繰返し列に対して定数指定(format文のname句でconst指定)するときは,NULL定数だけ指定できます。NULL定数以外の値を指定すると,Datareplicatorではエラーにしないで,指定された定数でそのまま反映されます(反映側HiRDBでデータ互換性エラーになります)。

反映定義のload文に繰返し列を含む表を指定すると,timestampを指定して時系列情報表を作成できません。繰返し列を含む表に対してtimestampを指定すると,定義解析エラーとして該当するデータ連動識別子(dsid)での反映処理が停止します。

反映定義のload文に繰返し列を含む表を指定しても,sqlconvopt1,sqlconvopt2を指定してマージ表を作成できます。ただし,要素指定のUPDATEをINSERTに切り替えるときは,不足している要素データはNULL値で補完されます(「3.3.11(3)繰返し列を含む表へのマージ表反映」を参照してください)。

(4) 繰返し列データの文字コード変換

抽出側HiRDBの文字コード体系と反映側HiRDBの文字コード体系が異なるときは,繰返し列データの各要素データに対して文字コード変換が実行されます。文字コード変換については,「4.3.5 文字コードの対応の設計」を参照してください。

(5) 繰返し列データのUOCインタフェース

繰返し列データは,反映情報編集UOC,列データ編集UOCで加工できます。ただし,列データ編集UOCでのデータの受け渡しは要素データごとになります(1回の列データ編集UOC関数の呼び出しで,一つの要素データを列データ編集UOC関数へ渡します)。このため,要素数を列データ編集UOCで増やしたり減らしたりできません。

(6) 要素数が不一致のときの処理

HiRDBでは繰返し列に対してUPDATEのSETやDELETEにデータが存在しない要素番号を指定して実行すると,存在しない繰返し列の要素に対する更新が無視されます(このときのSQLCODEは0,SQLWARN7に「W」が設定されます)。

通常のデータ連動では,抽出側と反映側の繰返し列の要素数が不一致になることはありません。ただし,HiRDBの操作でマージ表の反映や反映先の表を更新するなどが原因で要素数が不一致となったときは,反映環境定義skip_mvcelmwarnオペランドとsqlerr_skip_infoオペランドの指定に従って処理が実行されます。

skip_mvcelmwarn

sqlerr_skip_info

output

msgoutput

sqloutput

nooutput

true

処理

正常(反映処理を続行)

出力メッセージ

Warning

Warning

なし

なし

未反映出力

出力

なし

出力

なし

false

処理

エラー(トランザクションをロールバックして反映を中止)

出力メッセージ

Error

未反映出力

出力