ASPでMDBファイルを更新する時のロックについて
こんばんは
ASP(VBスクリプト)で MDBファイル(アクセス2000)の
データベースを 更新 又は レコード追加 をさせるときの
ロックについて悩んでいます。
まず条件として
このMDBファイルは 複数のユーザーが共有する物です。
(ここでは仮に A B C と3つのユーザーとします)
データの新規登録の時(レコードの追加)はレコード内の項目で
絶対重複しないIDを発行して登録します。
逆に更新の時は そのIDを基に該当レコードを更新します。
また、IDはA*** B*** C*** と言うように
各ユーザーの固有ID+重複しない番号 と言う内容にしています
二重書き込み防止のために色々考えているのですが
このIDを基にした方法だと 基本的にはAというユーザーが
同じIDの情報を複数のブラウザ開かない限り二重書き込みには
ならないと思っています。
(変更登録などはパスワードで管理して物理的に1人(1画面)しかできないようにしています)
なので物理的な2重書き込みはこれで防止できると思っているのですが
正しいでしょうか?
ただ、ものすごく悩んでいるのが
1人が1つのデータベースをさわっているのなら良いのですが
複数人が同時に使っている場合、レコードが服従することはないので
2重書き込みはないとしても
Aのデータを更新しているときに Bが新しく情報を追加したと言うような
事は起こるはずなので、ファイルが壊れないかと心配しています。
なので cgiで言うような書き込みロックのような事が
ASPでもできるのかなと思っています。
ただ、それ以前に こういった使い方はダメでしょうか?
(1つを複数人で使うこと)
良くない場合は A、B、C それぞれデータベースを作り
それを結合させた方が賢明なのかなとも思っています。
ロックの方法でやるか
個々に作って結合させるか
それ以外にもよい方法があるのか
これで悩んでします。
また、ロックの場合
Updateではなく
Recordsetオブジェクトを使って
IDがあれば更新 なければ 追加 と言う方法にしようと
思っていまして
その場合 OPENメソッド
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
で、ロックタイプを3にしても これはUpdateの時だけ有効のようなので 意味がないのかなと思っています
ただ MSのHPでの解説で
>>レコード単位の共有的ロックを示します。Update メソッドを呼び出した場合にのみ、プロバイダは共有的ロックを使ってレコードをロックします。
と書いているのですが、そもそも
>>共有的ロックを使ってレコードをロック
と言う意味が分かっていません
ファイルを壊さないためにも有効であるなら
Updateを使う方法に変えようかとも思うのですが、どうなんでしょうか?
なんか 基礎的なことが分かっていないので 分かりにくい質問になりましたが
ファイルが壊れないような処理方法を作っていきたいので、ご教授のほど よろしくお願いします。
お礼
ご回答ありがとうございます。 ご教示いただいたリンク先を参考にさせていただきたいと思います。 このたびはどうもありがとうございました。