Devart と Entity Framework を使用してアクセスする Oracle データベースがあります。
IMPORTJOBS
columnという名前のテーブルがありますSTATUS
。
また、同時に複数のプロセスを実行しています。IMPORTJOBS
それぞれが status を持つ最初の行を読み取り、'REGISTERED'
それを status に置き'EXECUTING'
、完了したらstatus に置きます'EXECUTED'
。
これらのプロセスが並行して実行されているため、次のことが発生する可能性があると考えています。
- プロセス A は、ステータスを持つ行 10 を読み取り
REGISTERED
、 REGISTERED
プロセス B は、ステータスがまだある行 10 も読み取ります。- プロセス A は、行 10 を status に更新します
EXECUTING
。
プロセス A がすでに行 10 を読み取っており、そのステータスを更新しようとしているため、プロセス B は行 10 を読み取れないはずです。
これをどのように解決すればよいですか?読み取りと更新をトランザクションに入れますか? または、バージョン管理のアプローチなどを使用する必要がありますか?
ありがとう!
編集:受け入れられた回答のおかげで、私はそれを機能させ、ここに文書化しました: http://ludwigstuyck.wordpress.com/2013/02/28/concurrent-reading-and-writing-in-an-oracle-database。