14.4.6 MODIFY(レコードの更新)
(1) 機能
1つのレコード実現値を更新します。
(2) 指定形式
MODIFY レコード名 〔SET 構成要素名=更新値〔,構成要素名=更新値〕…〕 〔USERPTROPT {SET|NOSET|CLEAR}〕;
- 注意事項
-
-
最後にセミコロン( ; )の指定が必要です。
-
オペランドの指定順序は変更できません。
-
(3) オペランドの説明
- ●レコード名
-
〜<識別子>((1〜30バイト))
レコード実現値を更新するレコード名を指定します。
4V AFMのSDBデータベースの場合は,子レコード名を指定します。
レコード名に英小文字を使用している場合は,レコード名を引用符( " )で囲んでください。引用符で囲まないと,英小文字は英大文字と見なされます。
- ●SET 構成要素名=更新値〔,構成要素名=更新値〕…
-
構成要素名:〜<識別子>((1〜30バイト))
更新対象の構成要素名と更新値を指定します。
このオペランドを省略した場合,USERポインタの操作だけを行います。
指定規則を次に示します。
-
最下位レベルの構成要素名を指定してください。
-
構成要素名は,更新する構成要素の個数分指定できます。
-
同じ構成要素名は指定できません。
-
構成要素名に英小文字を使用している場合は,構成要素名を引用符( " )で囲んでください。引用符で囲まないと,英小文字は英大文字と見なされます。
-
構成要素のデータ型に対応する更新値を指定してください。更新値の指定形式を次の表に示します。
表14‒12 更新値の指定形式 項番
構成要素のデータ型
更新値の形式※
指定例
1
CHARACTER
文字列定数
'AAABBB'
2
16進文字列定数
X'414141424242'
3
XCHARACTER
16進文字列定数
X'01020304'
4
PACKED DECIMAL FIXED
10進数定数
123.456
5
16進文字列定数
X'123C'
6
INTEGER
整数定数
100
7
16進文字列定数
X'64000000'
- 注※
-
各定数の表記方法については,マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。
-
- ●USERPTROPT {SET|NOSET|CLEAR}
-
ポインタオプションを指定します。
SET:更新するレコード実現値をUSERポインタに設定します。
NOSET:更新するレコード実現値をUSERポインタに設定しません。
CLEAR:USERポインタの設定を解除します。
USERポインタを持たないレコード型の場合は,このオペランドを省略してください。
CLEARは,更新対象のレコードがUSERポインタの示すレコードの場合に指定してください。
このオペランドを省略した場合は,ポインタオプションを使用しません。
USERポインタの設定,解除については,「2.5.7(1) USERポインタの設定・解除【4V FMB】」を参照してください。
(4) 使用例
MODIFYコマンドを実行してレコード実現値を更新する手順を次に示します。
手順
-
MODIFYコマンドを実行する
MODIFY "FMB1000" SET "USERDA0"=100.45;
-
更新対象のレコードが正しいかを確認する
MODIFY DATA 1 "USERDA0" <BEFORE> 999.45 <AFTER> 100.45 AGREE TO MODIFY ? [ENTER YES OR NO] YES ←上記の情報を確認後,YESを指定します。
MODIFYコマンドを実行してよいかどうかの確認メッセージが表示されます。
構成要素名,および更新前後のレコード実現値を確認してから,YESをしてください。
- 参考
-
構成要素名などに誤りがある場合は,NOを指定してMODIFYコマンドの実行を中止してください。
-
MODIFYコマンドの実行結果を確認する
MODIFY INFORMATION ROWID : X'070000001900000000000100' KFPB64050-I MODIFY command processing completed
MODIFYコマンドの実行結果が表示されます。
(5) MODIFYコマンドの実行時に表示される情報
MODIFYコマンドの実行時に表示される情報について説明します。
(a) MODIFYコマンドの実行確認メッセージ
MODIFYコマンドを実行した際,次に示す確認メッセージが表示されます。
(例)
MODIFY DATA 1 "USERDA0" ...1 <BEFORE> 999.45 ...2 <AFTER> 100.45 ...3 AGREE TO MODIFY ? [ENTER YES OR NO] ...4
- [説明]
-
-
構成要素の通番および構成要素名が表示されます。MODIFYコマンドのSETオペランドに指定した順番になります。
-
更新前のレコード実現値が表示されます。※
-
更新後のレコード実現値が表示されます。※
-
MODIFYコマンドを実行するかどうかの確認メッセージが表示されます。
1.〜3.の情報を確認し,問題がない場合はYESまたはyesを指定してください。
MODIFYコマンドの実行を中止する場合は,NOまたはnoを指定してください。
- 参考
-
-
YESまたはyes以外を指定した場合,NOが指定されたと見なされます。
-
USERポインタの更新だけを行う場合は,MODIFYコマンドの実行確認メッセージは表示されません。
-
- 注※
-
更新前後のレコード実現値は次の形式で表示されます。
項番
構成要素のデータ型
更新前後のデータの表示形式
表示例
1
CHARACTER
文字列定数の形式で表示されます。
'aaabbb'
2
XCHARACTER
16進文字列定数の形式で表示されます。
X'01020304'
3
PACKED DECIMAL FIXED
10進数定数の形式で表示されます。
ただし,更新後のレコード実現値が10進数定数の形式で表現できない場合は,16進文字列定数の形式で表示されます。
123.456
4
INTEGER
整数定数の形式で表示されます。
100
各定数の形式については,マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。
-
(b) MODIFYコマンドの実行結果
MODIFYコマンドの実行が終了した際,次に示す実行結果が表示されます。
MODIFY INFORMATION USER POINTER : OPERATED ...1 USER POINTER SERIAL NUM : 10 ...2 ROWID : X'880000001900000000000100' ...3
- [説明]
-
-
USERポインタを操作したかどうかが表示されます。
USERポインタを操作した場合は,OPERATEDが表示されます。USERポインタを操作していない場合は,この項目は表示されません。
-
USERポインタを操作した場合,USERポインタが示す一連番号が表示されます。USERポインタを操作していない場合は,この項目は表示されません。
-
更新したレコードのROWIDが表示されます。
-
(6) 留意事項
-
MODIFYコマンドは,個別開始している状態で実行してください。
-
更新対象のレコードへの位置づけをしておいてください。位置づけをしていない場合は,エラーになります。
-
構成要素のデータ型とデータ属性が一致している更新値を指定する必要があります。更新値のパディング(データを追加して長さを合わせる処理)や,切り捨てなどのデータの加工は行われません。また,データ型によっては,次の条件を満たす必要があります。
-
データ型がCHARACTERまたはXCHARACTERの場合
データ長が一致している必要があります。
-
データ型がPACKED DECIMAL FIXEDまたはINTEGERの場合
更新値が,構成要素のデータ型で表現できる範囲の値である必要があります。また,更新値を16進文字列定数で指定した場合,更新値の長さは,構成要素の長さと同じである必要があります。
なお,データ型がPACKED DECIMAL FIXEDの場合,更新値に指定した文字数で整数部桁数および小数部桁数が決まります。
(例)
01234.000 → 整数部桁数5,小数部桁数3
.12345 → 整数部桁数0,小数部桁数5
上記の例のようにゼロサプレスされません。更新値の整数部桁数および小数部桁数が,構成要素の整数部桁数および小数部桁数以下になるようにしてください。
-
-
MODIFYコマンドが正常終了したあとに#EXITコマンドを実行する場合は,次のようにpdsdbexe操作コマンドを実行してください。
-
レコードの更新を実行したトランザクションを正常終了させたい場合は,COMMITコマンドを実行してください。
-
レコードの更新を実行したトランザクションを取り消したい場合は,ROLLBACKコマンドを実行してください。
-