17.4.5 MODIFY文
- 〈この項の構成〉
(1) 機能
レコード実現値を更新します。
(2) 形式
(a) UAPに記述するMODIFY文
MODIFY レコード名 FROM :埋込み変数
(b) DMLコマンドで記述するMODIFY文
MODIFY レコード名 SET 構成要素名=更新値〔,構成要素名=更新値〕…
(3) オペランドの説明
- ●レコード名
-
〜<識別子>((1〜30バイト))
レコード実現値を更新するレコード名を指定します。
- 注意事項
-
-
レコード名に英小文字を使用している場合は,レコード名を引用符(")で囲んでください。引用符で囲まないと,英小文字は英大文字と見なされます。
-
レコード名に空白またはハイフン(-)を使用している場合は,レコード名を引用符(")で囲んでください。
-
- ●FROM :埋込み変数
-
更新対象のレコードの更新値を指定します。
埋込み変数の宣言方法については,マニュアル「HiRDB 構造型データベース機能(UAP開発編)」の「UAPの作成」の「埋込み変数の宣言」を参照してください。
- ●SET 構成要素名=更新値〔,構成要素名=更新値〕…
-
構成要素名:〜<識別子>((1〜30バイト))
更新対象の構成要素名と更新値を指定します。
指定規則を次に示します。
-
データ種別1がUの構成要素名を指定してください。
-
構成要素名は,更新する構成要素の個数分指定できます。
-
同じ構成要素名は指定できません。
-
構成要素名に英小文字を使用している場合は,構成要素名を引用符(")で囲んでください。引用符で囲まないと,英小文字は英大文字と見なされます。
-
OCCURS句を指定して生成された構成要素名を使用する場合は引用符(")で囲んでください。OCCURS句については,「11.7.1(4)(g) OCCURS」を参照してください。
-
構成要素のデータ型に対応する更新値を指定してください。更新値の指定形式については,「17.2.2 DMLのデータ型」を参照してください。
-
(4) 共通規則
-
更新対象のレコードを,次のどれかのDMLで位置づけておく必要があります。
-
FIND文(位置決め目的にFOR UPDATEを指定する)
-
FETCH文(位置決め目的にFOR UPDATEを指定する)
-
STORE文
なお,DMLコマンドのFINDコマンドで位置づけした場合は,MODIFYコマンドではレコード実現値を更新できません。GETコマンドでレコード実現値を取得すると,MODIFYコマンドでそのレコード実現値を更新できます。
-
-
埋込み変数で指定したレコードデータのうち,ルートレコードのデータベースキーの構成要素,および一連番号として定義した構成要素の値は変更できません。変更していても変更後のキー値に対応するレコードではなく,位置づいているレコードが更新されます。
-
埋込み変数で指定したレコードデータのうち,ルートレコードのデータベースキーの構成要素,および一連番号の構成要素に対応するデータは無視されます。
-
キー項目を更新した場合,更新した値に対応してレコードの並び順を変更します。レコード順の並びが変更された場合,親子集合位置指示子を更新します。更新内容については,「2.5.3 位置指示子」を参照してください。
-
SDBデータベースの横分割を指定したレコードの更新で,二次インデクスのRDエリア分割キーを更新した場合,RDエリアの移動を伴う更新はできません。
(5) 使用例
- 例1
-
ルートレコードRECAのレコード実現値の値を更新します。
MODIFY "RECA" FROM :WRECA
- 例2
-
DMLコマンドでルートレコードRECAのレコード実現値の値を更新します。
MODIFY "RECA" SET "USERDA0"=200