データベース制御(照会・更新・削除)などの機能・制限事項
- Home >dbSheetの機能・制限事項 >データベース制御(照会・更新・削除)などの機能・制限事項 >同じDBのレコードに対して、同時に更新をしようとした場合、排他処理の方法は、どうしたらよいでしょうか?
Q. 同じDBのレコードに対して、同時に更新をしようとした場合、排他処理の方法は、どうしたらよいでしょうか?
製品の種類
:実行版開発版サーバー版ServerLogViewerADツールAnswer
dbSheetでは排他制御として、①楽観ロック方式、②悲観ロック方式の2つを用意しています。
①楽観ロック方式の場合
1)同時に、同一レコードについては更新することはできず、先に更新したほうが優先となります。
2)更新するレコードが異なる場合には、それぞれのレコードに対して、同時に更新することが可能です。
②悲観ロック方式の場合
1)10100.SQL実行の動作設定-基本設定で、「取得レコードを悲観ロックで排他制御」にチェックして、実行すると、照会したサーバー側のレコードについては、「DBS_STATUS」の値が「3」 に設定され、他のユーザーは、「3」になっているレコードについては、参照は可能ですが更新することはできません。
したがって、先に読み込んだユーザの更新処理が完了して、「DBS_STATUS」の値が「1」 になるまで、他のユーザーは更新することはできなくなります。
同時に、同一のレコードを更新することはできませんが、10100.SQL実行で照会するレコードがダブらないように絞り込んでデータを照会すると、悲観ロックに引っかからないで、更新することができます。
【注意事項】
悲観ロックは、単一テーブルのみで利用可能です。
したがって、注意としては、クエリーには、JOINなどを含まないようにする必要があります。
※テクニカルリファレンス 第4章 同時実行制御機能(排他制御)についてを参照してください。
オンラインヘルプの改善にご協力ください。
このページは役に立ちましたか?