2.5.7 レコードの格納
SDBデータベースに,1件のレコードを格納します。TP1/FSPが提供するライブラリ関数を使用する場合,格納するデータはデータ格納エリアに設定します。DMLを使用する場合,格納するデータは埋込み変数に設定します。格納されたレコードに対しては,レコードの位置づけが行われます。
なお,ユーザキーが定義されている4V MAMまたは4V TAMのSDBデータベースにレコードを格納する場合,格納するユーザキーにはLASTポインタが示すレコードのユーザキーよりも,大きな値を設定する必要があります。
(1) USERポインタの設定【4V FMB】
4V FMBのSDBデータベースの子レコードを格納する場合,親レコード型にUSERポインタの定義があれば(SDBデータベース格納定義のOWNER POINTER FOR句にFIRST LAST USERを指定していれば),USERポインタを設定できます。
(2) レコードの格納順序
レコード格納時の格納順序は,レコードによって異なります。レコードの格納順序について,次に説明します。
なお,レコードの配置制御(具体的に,どのページにどのようにレコードを格納するか)については,次の項目を参照してください。
(a) ルートレコードの格納順序
ルートレコードに格納順序はありません。
なお,ルートレコードの検索に使用するシーケンシャルインデクスは,データベースキーの昇順に作成されます。そのため,ルートレコードは,データベースキーの昇順に検索されます。
(b) 子レコードの格納順序
子レコードは次のどちらかの方法で格納されます。子レコードの格納方法は,子レコード型の定義でユーザキーを定義しているかどうかで異なります。
-
キー順での格納(SDBデータベース定義のORDER SORTED DUPLICATES PROHIBITED指定)
子レコード型の定義でユーザキーを定義している場合,格納するレコード中のユーザキーの値に従って,HiRDB/SDがレコードの挿入位置を検索します。その検索結果に従って,キーの昇順または降順にレコードが格納されます。
-
子レコード群の最後尾への格納(SDBデータベース定義のORDER LAST指定)
子レコード型の定義でユーザキーを定義していない場合,HiRDB/SDがレコードの子レコード群の最後尾を検索します。その検索結果に従って,レコードが格納されます。
それぞれのレコードの格納方法を次の図に示します。
(3) レコードの位置づけ
ルートレコードの格納時は,レコードに位置指示子を位置づけておく必要はありません。
子レコードの格納時は,親レコードに対してレコードの検索,またはレコードの格納を実行して,位置指示子を親レコードに位置づけておく必要があります。
ただし,4V AFMのSDBデータベースの場合は,位置指示子を親レコードに位置づけておく必要はありません(親レコードになる仮想ルートレコードの位置づけをHiRDB/SDが内部的に行います)。
レコードの位置づけについては,「2.5.3(1) レコードの位置づけ」を参照してください。