これは、oledb 接続を持つ共有ドライブ上の .mdb データベースを使用して Visual Basic で記述されています。
次の 2 つのレコードを含むテーブルがあるとします。
|ID |NAME |CITY |
|2 |John Smith |Dallas |
|15 |Bob Johnson |New York |
oledb はテーブルをローカル データセットにコピーしてから db( ) に送り返すため、data.tables("Test").Rows.Add
2 人が同時に 3 行目のスロットに新しいレコードを追加しようとすると、レコードの 1 つが失われますか? もしそうなら、どうすればこれを防ぐことができますか?
補足: 既存の行を編集するアクセス権はなく、新しい行を追加するだけです。
回避策:したがって、提案どおりにテストプログラムをセットアップしてループし、試行間のバッファ時間なしでデータベースを100回更新しようとしました。2台のコンピューターで同時に実行しました。まったく同じ秒で更新しようとしたときに、プログラムの 1 つのデータが失われましたが、エラーも発生しました。最終的に、これはめったに発生せず、プログラムの実行ごとに合計で約 3 つのエラーしか発生しませんでした。
私のプログラムは主に小規模であるため、MySQL 用にプログラム全体を書き直してコンピューターにセットアップすることはできませんでした。データベース ファイルを共有ドライブに置きたいだけだからです。最後に、エラーが発生した場合に更新を再試行するために catch ブロックで作業することで、データが失われないところまで機能させることができました。大規模な生産のためのソリューションではありませんが、私の目的には非常にうまく機能します。