スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

12.6.1 分散クライアントでの注意事項

<この項の構成>
(1) リモートデータベースとローカルデータベースの同期更新はできません
(2) 空白文字の変換について

(1) リモートデータベースとローカルデータベースの同期更新はできません

リモートデータベースを更新する場合,COMMIT処理中に通信障害などの障害が発生すると,分散サーバ側でCOMMIT処理をしたのかロールバックしたのかを分散クライアント側の情報だけで判断できないので,サーバ側の状態を調べる必要があります。また,リモートデータベースを更新するときに,同じトランザクション内でローカルデータベースを更新しないでください。両方に更新を掛けてCOMMIT処理に失敗した場合,ローカルデータベースは直前の同期点の状態に戻りますが,リモートデータベースは更新されてしまうことがあります。リモートデータベースだけが更新されてしまうと,更新済みのデータベースを後から同期点の状態に戻すことは困難です。

(2) 空白文字の変換について

(a) データの代入と比較

データの代入と比較をする場合,分散クライアント側のHiRDBで指定したシステム共通定義のpd_space_levelオペランド,又はクライアント環境定義のPDSPACELVLの指定は無効となります。

分散サーバ側で指定した空白変換レベル(分散サーバがHiRDBの場合はシステム共通定義のpd_space_levelオペランド,分散サーバがXDM/RDの場合はRD環境定義のKEIS CODE SPACE LEVEL)の値が有効となります。必要であれば,分散サーバ側で空白変換レベルを指定してください。

(b) データの検索

分散クライアント側では空白変換をしません。

分散サーバ側で空白変換レベルを指定している場合,検索結果は分散サーバ側の仕様に従います。

分散サーバがHiRDBの場合の空白変換を次の表に示します。

表12-15 分散サーバがHiRDBの場合の空白変換

分散サーバ アクセスする列のデータ型
DBMS 空白変換レベル NCHAR,NVARCHAR MCHAR,MVARCHAR CHAR,VARCHAR
HiRDB 1 ×1 ×2 ×
3 3 ×2 ×

(凡例)
○:データの取り出し時に空白変換をします。
×:データの取り出し時に空白変換をしません。

注※1
データの格納時に空白変換をする場合は,半角空白2バイトが全角空白1文字に変換されます。データ格納時に,データ検索時と同じ空白変換レベルが指定されていれば,検索結果のデータ中の空白は全角空白となります。

注※2
データの格納時に空白変換をする場合は,全角空白1文字が半角空白2バイトに変換されます。データ格納時に,データ検索時と同じ空白変換レベルが指定されていれば,検索結果のデータ中の空白は半角空白となります。

注※3
データの取り出し時に全角空白1文字を半角空白2バイトに変換するので,検索結果のデータ中の空白は半角空白となります。

分散クライアント側のHiRDBが,検索結果のデータ中の全角空白1文字を半角空白2バイトに変換します。アクセスする列のデータ型が,NCHAR,及びNVARCHARの場合だけでなく,MCHAR,MVARCHAR,CHAR,及びVARCHARのときも変換します。このため,UAPに返却する検索結果のデータ中の空白は常に半角空白になります。