Devart と Entity Framework を使用してアクセスする Oracle データベースがあります。
IMPORTJOBScolumnという名前のテーブルがあります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。