14.5.6 MODIFY(レコードの更新)
(1) 機能
1つのレコード実現値を更新します。
(2) 指定形式
指定形式については,「17.4.5 MODIFY文」の「(2) 形式」の「DMLコマンドで記述するMODIFY文」を参照してください。
- 注意事項
-
-
最後にセミコロン( ; )の指定が必要です。
-
オペランドの指定順序は変更できません。
-
(3) オペランドの説明
オペランドの説明については,「17.4.5 MODIFY文」の「(3) オペランドの説明」を参照してください。
(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が指定されたと見なされます。
- 注※
-
更新前後のレコード実現値は次の形式で表示されます。
項番
構成要素のデータ型
更新前後のデータの表示形式
表示例
1
CHARACTER
文字列定数の形式で表示されます。
'aaabbb'
2
XCHARACTER
16進文字列定数の形式で表示されます。
X'01020304'
3
PACKED DECIMAL FIXED
10進数定数の形式で表示されます。
ただし,更新後のレコード実現値が10進数定数の形式で表現できない場合は,16進文字列定数の形式で表示されます。
123.456
4
INTEGER
SMALLINT
整数定数の形式で表示されます。
100
各定数の形式については,マニュアル「HiRDB SQLリファレンス」の「定数」を参照してください。
-
(b) MODIFYコマンドの実行結果
MODIFYコマンドの実行が終了した際,次に示す実行結果が表示されます。
MODIFY INFORMATION ROWID : X'880000001900000000000100' ...1
- [説明]
-
-
更新したレコードのROWIDが表示されます。
-
(6) 留意事項
-
SDB用UAP環境定義のsubschemaオペランドの-aオプションにupdateを指定してください。SDB用UAP環境定義については,「9.3 SDB用UAP環境定義【SD FMB】」を参照してください。
-
MODIFYコマンドは,個別開始している状態で実行してください。
-
更新対象のレコードへの位置づけをしておいてください。位置づけをしていない場合は,エラーになります。
-
構成要素のデータ型とデータ属性が一致している更新値を指定する必要があります。更新値のパディング(データを追加して長さを合わせる処理)や,切り捨てなどのデータの加工は行われません。また,データ型によっては,次の条件を満たす必要があります。
-
データ型がCHARACTERまたはXCHARACTERの場合
データ長が一致している必要があります。
-
データ型がPACKED DECIMAL FIXED,INTEGERまたはSMALLINTの場合
更新値が,構成要素のデータ型で表現できる範囲の値である必要があります。また,更新値を16進文字列定数で指定した場合,更新値の長さは,構成要素の長さと同じである必要があります。
なお,データ型がPACKED DECIMAL FIXEDの場合,更新値に指定した文字数で整数部桁数および小数部桁数が決まります。
(例)
01234.000 → 整数部桁数5,小数部桁数3
.12345 → 整数部桁数0,小数部桁数5
上記の例のようにゼロサプレスされません。更新値の整数部桁数および小数部桁数が,構成要素の整数部桁数および小数部桁数以下になるようにしてください。
-
-
MODIFYコマンドが正常終了したあとに#EXITコマンドを実行する場合は,次のようにpdsdbexe操作コマンドを実行してください。
-
レコードの更新を実行したトランザクションを正常終了させたい場合は,COMMITコマンドを実行してください。
-
レコードの更新を実行したトランザクションを取り消したい場合は,ROLLBACKコマンドを実行してください。
-
-
FINDコマンドで位置づけした場合,MODIFYコマンドでの更新はできません。FINDコマンドで位置づけしたレコードをMODIFYコマンドで更新する場合は,GETコマンドによってレコードデータを取得したあとにMODIFYコマンドを実行してください。
そのほかの留意事項については,「17.4.5 MODIFY文」の「(4) 共通規則」を参照してください。