4.4.2 制限事項
オンライン業務と更新バッチ処理の同時実行を行う上での制限事項について説明します。
- 〈この項の構成〉
(1) 更新バッチ処理の条件
オンライン業務と同時に実行する更新バッチ処理が,オンライン業務で操作するデータ(行)と重複するデータを更新する場合,更新列だけを反映する追い付き反映処理を使用する必要があります。このためpdorbeginコマンドに-eオプションを指定して実行します。
オンライン業務と同時に実行する更新バッチ処理と,オンライン業務で操作するデータ(行)が重複しない場合は,更新列だけの反映処理を使用する必要はありません。
更新列だけの反映処理を使用しないで,更新バッチ処理での更新とオンライン業務の更新するデータ(行)が重複した場合は,バッチの更新内容は保証できません。
更新バッチ処理の後にオンライン業務を反映した場合の結果を次の表に示します。
更新バッチ処理 |
オンライン業務 |
|||
---|---|---|---|---|
処理内容 |
行の重複 |
INSERT文 |
DELETE文 |
UPDATE文 |
INSERT文 |
なし |
○ |
○ |
○ |
あり |
× (ユニークエラー) |
△※3 (削除されます) |
△※1※3 |
|
DELETE文 |
なし |
○ |
○ |
○ |
あり |
△※4 (INSERTされます) |
× (NOT FOUND) |
× (NOT FOUND) |
|
UPDATE文 |
なし |
○ |
○ |
○ |
あり |
× (ユニークエラー) |
△※3 (DELETEされます) |
△※1※2※3 |
|
キー値更新 |
なし |
○ |
○ |
○ |
あり |
× (ユニークエラー) |
× (NOT FOUND) |
× (NOT FOUND) (ユニークエラー) |
バッチ処理 |
オンライン業務(UPDATE文) |
|||||||
---|---|---|---|---|---|---|---|---|
ADD指定 |
DELETE指定 |
SET指定 |
||||||
UPDATE文 |
ADD指定 |
条件1 |
条件2 |
△※1※2 |
△※1※2 |
|||
△※1※2 |
× (最大要素数超過) |
|||||||
DELETE指定 |
△※1※2 |
条件3 |
条件4 |
条件3 |
条件4 |
|||
× (該当要素なし) |
△※1※2 |
× (該当要素なし) |
△※1※2 |
|||||
SET指定 |
条件5 |
条件6 |
条件7 |
同一要素更新あり |
条件8 |
同一要素更新なし |
同一要素更新あり |
|
△※1※3 |
○ |
△※1※3 |
△※1 (DELETEされる) |
○ |
○ |
△※1 (上書きUPDATE) |
更新列だけを反映する追い付き反映処理は,オンライン業務と更新バッチ処理の実行が,更新バッチ処理で更新(UPDATE)した行とオンライン業務で更新(UPDATE)した行が重複した行でも更新する列が異なる場合,バッチの更新内容を保証する機能です。
オンライン業務で行更新(ROW更新)またはFIX表の列更新で全列を更新した場合は,実際に列の値が更新された列だけオリジナルRDエリアの表の更新を行います。オンライン業務でSET句またはDELETE句で繰返し列にない要素番号を指定したUPDATE文を実行した場合,存在しなかった要素の更新は行いません。オンライン業務の更新種別,更新対象および追い付き反映処理の更新対象列を表「オンライン業務の更新種別,更新対象および追い付き反映処理の更新対象列」に,繰返し列の場合のオンライン業務の更新対象要素,および追い付き反映処理の更新対象を表「繰返し列の場合のオンライン業務の更新対象要素,および追い付き反映処理の更新対象」に示します。
オンライン業務 |
追い付き反映処理の更新対象列 |
||
---|---|---|---|
表種別 |
更新種別 |
更新対象列 |
|
FIX表 |
行更新(ROW) |
− |
更新前後で異なる値の列 |
列更新 |
全列更新 |
更新前後で異なる値の列 |
|
上記以外 |
UPDATE文で更新対象に記述した行 |
||
非FIX表 |
行更新(ROW) |
− |
− |
列更新 |
全列更新 |
UPDATE文で更新対象に記述した列。ただし,繰返し列の場合,UPDATE文に列を記述しても,要素の更新がない列は更新対象外です。 |
|
上記以外 |
オンライン業務でのUPDATE SETまたはUPDATE DELETEの更新対象要素 |
追い付き反映処理の更新対象 |
---|---|
存在する |
更新対象 |
存在しない |
更新対象外 |
更新バッチ処理で更新した行とオンライン業務で更新した行が同じ行で,なおかつ,同じ列の更新を行った場合,更新内容は保証できません。更新バッチ処理の更新対象とオンライン業務の更新対象および更新結果を次の表に示します。
バッチ処理で更新の行とオンライン業務で更新の行 |
バッチ処理で更新の列とオンライン業務で更新の列 |
更新結果 |
---|---|---|
異なる |
− |
○ |
重複している |
異なる |
○ |
重複している |
× |
更新列だけの反映処理を使用する場合は,pdorbeginコマンドに-eオプションを指定して実行してください。
(2) 追い付き反映処理でのエラーのスキップ
追い付き反映処理で論理的なエラーが発生する場合,pdorend(追い付き反映処理コマンド)に-fオプションを指定して実行します。-fオプションでは追い付き反映処理の制御文が指定でき,ここで反映エラースキップを指定することで,エラーが生じたデータを無視して,追い付き反映処理を続行できます。エラーとなったデータ情報は,制御ファイルで指定したスキップ情報ファイルに出力します。
追い付き反映処理でのエラーをスキップする機能の概要を次の図に示します。
反映をスキップしたデータを,データベースに反映するかどうかはユーザが判断します。反映する場合はSQLなどを実行して,データベースの整合性を回復します。