この特性は、オンラインタスクとバッチタスクの両方で利用することができます。現行タスクが処理しているレコードに他のユーザがアクセスしないようにするために、Magic uniPaaSがロックをかける時期とメモリ内で保持している情報に関して制御するかどうかを指定できます。
ロックの検証は、[更新レコードの識別]特性の指定内容に基づいて実行されます。この特性は、レコードを更新するために、Magic uniPaaSがレコードの再読込をどのように行うかを指定するものです。
この特性の値としては、次のいずれかが指定できます。
I=即時 …… レコードが読み込まれると同時に、そのレコードにロックがかけられます。この場合、検証は行われません。ロックは、解除されるまで有効です。バッチタスクではこの設定がデフォルトです。この方式は、データの完全性を増大させますが、並行性を減少させることになります。マルチユーザ環境のオンラインタスクでは、ユーザが同じプログラムを使い続ける時間が予期できないため、この設定にしておくと、レコードのロックが異常に継続することがあります。この値は物理トランザクションにのみ適用されます。
O=入力時
…… ユーザがレコードの更新を始めた時に、ロックがかけられます。更新を始めた時とは、オンラインタスクの場合、入力カラムの先頭に文字を入力したり、チョイスコントロールで値を選択した場合にあたります。バッチタスクの場合は、ユーザによる操作がないため、[レコード後]や[レコード前]で実行される最初の[項目更新]処理コマンド、あるいはタスクやプログラムを最初に呼び出す際にロックが実行されます。このロック方式では検証が行われます。この値は遅延トランザクションと物理トランザクションに適用されます。
オンラインタスクでは、この設定がデフォルトです。デフォルトのオンラインタスクは、[トランザクションモード]特性が「遅延」で[ロック方式]が「なし」になります。
注意: |
|
B=更新時 …… Magic uniPaaSがロックするレコードは、実際にデータベースに書き込まれる前のレコードに限られます。対話レベル(オンライン)と[レコード後](オンライン、バッチ)の実行中に、ロックがかけられることはありません。ロックの検証段階でエラーが発生すると(レコードを読み取った後で別のユーザがそれを更新した場合)、更新は実行されず、その旨を報告するメッセージが表示されます。現在のタスクによって呼び出されたサブタスクは、他のテーブルに対して情報を更新していることがあり、そのため現行レコードがディスクに対して更新されていないとデータの整合性に問題が発生します。データの整合性で問題が生じないようにするため、この値を使用する時は注意してください。基礎となるデータベースでロック処理による負荷が大きい時や、検証に失敗しても、タスクの構造上、データの整合性を維持できる時に限って使用するようにしてください。この値は物理トランザクションにのみ適用されます。
N=なし …… レコードにロックはいっさいかけられません。このため、他のクライアントがアクセスして更新したばかりのレコードを更新してしまい、データの整合性が失われる可能性があるため、このオプションの設定は、注意して使わなければなりません。オンラインタスクのデフォルトです。
注意: |
[トランザクションモード]が「O=なし」の場合、[トランザクション開始]特性は無効になります。 |
関連トピック: