同時実行制御とは、複数のユーザーが同時に更新を実行しているときにデータベースの整合性を保つことを意味します。たとえば、データの一貫性が失われるダーティライトや、同じ問い合わせなのに同じ結果になると保証されないファントムリードなど、このような問題を発生させないために同時実行制御が行われます。
内部データベースを使用している場合、特別な設定をしなくとも楽観的同時実行制御が行われます。「楽観的同時実行制御」は、 データを更新する直前に他のユーザーによって更新されていないかどうかをチェックし、更新されていない場合にデータをロックし更新します。更新されていた場合は、更新処理をキャンセルします。
この同時実行制御が行われるのは以下の場合のみとなり、それ以外の場合には同時実行制御は行われません。
[更新対象レコード]が「カレントレコード」に設定されている[テーブルデータの更新]コマンドを使用して更新を行ったとき
[編集を許可]オプションが有効で、かつ[リストビューのデータを即時更新しない]オプションが無効であるリストビューで、ユーザーがカレントレコードを変更することで編集したレコードの更新を行ったとき
ワークフローバー型セルのボタンを使用して、ユーザーがワークフローを次の状態に進める操作を行ったとき
[処理の種類]が「リストビューの更新確定」に設定されている[リストビューの操作]コマンドを使用して更新を行ったとき
同時実行制御が働いた場合、次のような警告メッセージが表示されます。
たとえば、次の図に示すように、ユーザーAとユーザーBの両方が商品一覧ページを表示します。
ユーザーAとユーザーBは、両者とも商品コード「NWTB-1」を編集用のポップアップウィンドウで開き、ユーザー1の変更が完了した後のタイミングで、ユーザー2が「変更」ボタンをクリックします。
この場合、ユーザーBの画面には、データベースの更新に失敗したことを示すメッセージがダイアログウィンドウによって表示されます。