ロックとトランザクション: リッチクライアントタスクでは楽観ロック

トランザクションの種類は大別すると次の2種類があります。
・悲観(的)ロック
・楽観(的)ロック

悲観(的)ロックは、dbMAGICの世界で今まで普通に使われてきたロックです。
リアルタイムに「レコードロックの解除待ち」というメッセージが出て、入力等の処理が強制的に待たされます。

それに対して、楽観(的)ロックは、動作が異なります。
「レコードロックの解除待ち」というメッセージは出てきません。
遅延トランザクションがコミット(確定)されるとき、即ち、物理的にデータベースへの書き込みが発生するときに、書き込み対象のレコードが他のユーザによって更新されていないかを確認します。
そのとき、他のユーザからの更新がなかったと判定されれば、そのまま書き込みを継続します。
しかし、更新されていたと判断したときは、「このレコードは他のユーザによって更新されました。再読み込みします。」というメッセージが出て、処理が中断され、ユーザに「やり直し」を求めます。

リッチクライアントタスクでは、必ず、楽観(的)ロックを使います。
悲観(的)ロックは使えません。
但し、楽観(的)ロックが発生しても、上記のメッセージが必ずユーザの目の前に表示されるとは限りません。
リッチクライアントのサーバでは、メッセージを出しているつもりなのですが、それを表示させるステータス行等が無い画面では目にすることができないからです。

それから、リッチクライアントの形態で運用されるアプリケーション全体で楽観(的)ロックしか使えない、というわけでもありません。
リッチクライアントタスクからコールされるバッチタスクでは、「物理トランザクション+悲観(的)ロック」が使えます。
タスクタイプがリッチクライアント、となっているものが「遅延トランザクション+
楽観(的)ロック」限定となります。