付録L SDBデータベースを操作するAPIまたはDMLと,データページの排他解除の有無の関係
排他自動解除機能を使用すると,SDBデータベースを操作した結果,レコード位置指示子が指さなくなったレコード実現値が格納されているデータページ(ページまたはサブページ)に対する排他を,APIまたはDMLによるSDBデータベースの操作完了時に解除します。
SDBデータベースを操作するAPIまたはDMLと,データページの排他解除の有無(排他自動解除機能の対象となるデータページ)の関係を次の表に示します。
実行するSDBデータベースを操作するAPIまたはDML |
対象となるレコード位置指示子 |
対象となるレコード位置指示子に対する操作 |
||||||||
---|---|---|---|---|---|---|---|---|---|---|
生成 |
消滅※1 |
更新 |
||||||||
空 |
X |
空 → 空 |
空 → X |
X → 空 |
X → X |
|||||
個別開始 |
操作対象となるSDBデータベースに対応するすべての位置指示子 |
△ |
− |
− |
− |
− |
− |
− |
||
個別終了 |
− |
△ |
○ |
− |
− |
− |
− |
|||
4V FMBまたはSD FMB |
レコードの検索(FETCH) |
操作対象となるレコードビュー※6に対応する位置指示子 |
− |
− |
− |
△ |
△ |
○ |
○ |
|
操作対象となるレコードビューの定義上,下位に位置するレコードビューに対応する位置指示子 |
− |
− |
− |
△ |
− |
○ |
− |
|||
位置指示子の位置づけ(FIND) |
操作対象となるレコードビュー※6に対応する位置指示子 |
− |
− |
− |
△ |
△ |
○ |
○ |
||
操作対象となるレコードビューの定義上,下位に位置するレコードビューに対応する位置指示子 |
− |
− |
− |
△ |
− |
○ |
− |
|||
複数レコードの検索(FETCHDB ALL) |
なし |
− |
− |
− |
− |
− |
− |
− |
||
レコードの格納(STORE) |
操作対象となるレコードビューに対応する位置指示子 |
− |
− |
− |
− |
△ |
− |
○ |
||
操作対象となるレコードビューの定義上,下位に位置するレコードビューに対応する位置指示子 |
− |
− |
− |
△ |
− |
○ |
− |
|||
レコードの削除(ERASE) |
操作対象となるレコードビューに対応する位置指示子 |
− |
− |
− |
− |
− |
△ |
− |
||
操作対象となるレコードビューの定義上,下位に位置するレコードビューに対応する位置指示子 |
− |
− |
− |
△ |
− |
△ |
− |
|||
レコードの更新(MODIFY) |
なし |
− |
− |
− |
− |
− |
− |
− |
||
4V AFM |
レコードの検索(FETCH) |
仮想ルートレコードに対応する位置指示子 |
操作対象となるレコード実現値の仮想ルートレコード実現値に位置づいていない場合 |
− |
− |
− |
△ |
△ |
○ |
○ |
上記以外 |
− |
− |
− |
− |
− |
− |
− |
|||
操作対象となるレコードビューに対応する位置指示子 |
− |
− |
− |
△ |
△ |
○ |
○ |
|||
操作対象となるSDBデータベースに対応する,上記以外の位置指示子※3 |
操作対象となるレコード実現値の仮想ルートレコード実現値に位置づいていない場合 |
− |
− |
− |
△ |
− |
○ |
− |
||
上記以外 |
− |
− |
− |
− |
− |
− |
− |
|||
レコードの格納(STORE)※2 |
仮想ルートレコードに対応する位置指示子 |
操作対象となるレコード実現値の仮想ルートレコード実現値に位置づいていない場合 |
− |
− |
− |
− |
△ |
− |
○ |
|
上記以外 |
− |
− |
− |
− |
− |
− |
− |
|||
操作対象となるレコードビューに対応する位置指示子 |
− |
− |
− |
− |
△ |
− |
○ |
|||
操作対象となるSDBデータベースに対応する,上記以外の位置指示子※3 |
操作対象となるレコード実現値の仮想ルートレコード実現値に位置づいていない場合 |
− |
− |
− |
△ |
− |
○ |
− |
||
上記以外 |
− |
− |
− |
− |
− |
− |
− |
|||
レコードの削除(ERASE) |
仮想ルートレコードに対応する位置指示子 |
− |
− |
− |
− |
− |
− |
− |
||
操作対象となるレコードビューに対応する位置指示子 |
− |
− |
− |
− |
− |
△ |
− |
|||
操作対象となるSDBデータベースに対応する上記以外の位置指示子※3 |
− |
− |
− |
− |
− |
− |
− |
|||
レコードの更新(MODIFY) |
なし |
− |
− |
− |
− |
− |
− |
− |
||
レコードの一括削除 |
仮想ルートレコードに対応する位置指示子 |
− |
− |
− |
△ |
△ |
○ |
○ |
||
操作対象となるSDBデータベースに対応する上記以外の位置指示子※3 |
− |
− |
− |
△ |
− |
○ |
− |
|||
構成情報取得 |
仮想ルートレコードに対応する位置指示子 |
− |
− |
− |
△ |
△ |
○ |
○ |
||
操作対象となるSDBデータベースに対応する上記以外の位置指示子※4 |
− |
− |
− |
− |
△ |
− |
− |
- (凡例)
-
○:該当する操作があります(排他は解除されます※5)。
△:該当する操作があります(排他は解除されません)。
−:該当する操作はありません。
X:対象となるレコード位置指示子が,対応する任意のレコード実現値を指している状態
空:対象となるレコード位置指示子がどのレコード実現値も指していない状態(空値)
A→B:A(APIまたはDML実行前)→B(APIまたはDML実行後)
- 注※1
-
空値のレコード位置指示子を消滅させる場合と,レコード実現値を指している位置指示子を消滅させる場合では,排他自動解除機能の動作は変わります。
- 注※2
-
4V AFMのSDBデータベースのレコードの格納(STORE)には,次の3種類があります。
-
仮想ルートレコードのレコード実現値の追加を伴うもの
-
子レコード実現値だけを追加するもの
-
内部的にレコードの更新(MODIFY)を行うもの
これらを実行した場合の位置指示子の動きと排他自動解除機能の動作に差はありません。
-
- 注※3
-
「操作対象となるSDBデータベースに対応する上記以外の位置指示子」とは,次の例でのレコード位置指示子RBのことを指します。
-
4V AFMのSDBデータベースで仮想ルートレコード型Aとその配下に子レコード型BとCが定義されたSDBデータベースで,仮想ルートレコード実現値A1,レコード実現値B1を検索(FETCH)します。レコード位置指示子RAは,仮想ルートレコード実現値A1,レコード位置指示子RBは子レコード実現値B1に位置づけられます。
-
レコード実現値C1を検索(FETCH)します。レコード位置指示子RAは,仮想ルートレコードのレコード実現値A2に位置づけられ,レコード位置指示子RBは空値になります。
この場合,各レコード位置指示子の説明は,次のとおりです。
RA:仮想ルートレコードに対応する位置指示子
RC:操作対象となるレコードビューに対応する位置指示子
RB:(操作対象となるSDBデータベースに対応する)上記以外の位置指示子
-
- 注※4
-
構成情報取得はSDBデータベースの操作前だけ実行できるため,仮想ルートレコードに対応する位置指示子以外のレコード位置指示子が位置づいていることはありません(空値から空値への更新は発生します)。
- 注※5
-
「2.9.5(9) 排他自動解除機能の使用時に排他が解除されないケース」で説明する,解除対象外になるデータページについては,解除されません。
- 注※6
-
HiRDB/SD定義ユティリティ(pdsdbdef)がSDBデータベース定義の情報を基に作成したSDBデータベースビュー定義で定義されたレコード型を指します。