2017-11-13 6 views
0

テーブルをロックして、他のユーザーがその内容を更新中にクエリを実行しないようにするにはどうすればよいですか?MS ACCESS更新中にテーブルをロックする、ブロックする

現在、私のデータはテーブルを拭き取り、それを再投入することで更新されています(私は、データを更新する最良の方法ではありませんが、ソースデータにはレコード更新によるレコードを実行するためのユニークキーがないこと、唯一の方法)。ユーザーが私の更新中にテーブルにアクセスし、空である間にそれをキャッチして、悪い情報を返すシナリオがあります。

SQL(またはコード)レベルに、照会の前にDB更新が完了するのを待つブロッキング文を作成する方法がありますか?

答えて

1

アクセスにはほとんどロック機能がありません。別のバックエンドにデータを格納している場合を除き、データベース全体のロックまたはロックの設定は一切できません。

いくつかのロック機能設定テーブルロックがテーブルのテーブル構造が変更されているが、私の知る限り見つけることができるように、それは(GUI経由でもVBA経由でもない)

ユーザーに利用できないときがありますADOとDAOの両方がロックをサポートしています(照会の実行時にdbDenyRead + dbDenyWriteを設定してDAOにIsolationLevelを設定してADOで実行します)。しかし、短期間のテストでは、これらのオプションはAccessでは絶対に何も行いません。

+0

私の掘り出し物も同様になっているようです。今のところレコードやテーブルをロックするフィールドを実装していますが、これは防弾ではありません。私は1年前にこれを研究して覚えているようですが、SQLですべてのクエリを実行しても適度にロックを実装できるSQLステートメントがあることがわかりましたが、これを再度見つけることができませんでした。 – Wobbles

+0

@wobbles複数のステートメントを連続して実行する場合は、トランザクションを使用できます。 –

+0

複数のユーザー間でこれを行うにはどうすればいいですか?トランザクションロックは複数のセッション/ユーザーで共有されますか? – Wobbles

関連する問題