【发布时间】:2013-02-13 11:50:22
【问题描述】:
我有一个使用 Devart 和实体框架访问的 Oracle 数据库。
有一个名为IMPORTJOBS 的表,其中有一列STATUS。
我也有多个进程同时运行。他们每个人都读取IMPORTJOBS 中状态为'REGISTERED' 的第一行,将其放入状态'EXECUTING',如果完成则将其放入状态'EXECUTED'。
现在因为这些进程是并行运行的,我相信可能会发生以下情况:
- 进程A读取状态为
REGISTERED的第10行, - 进程 B 还读取第 10 行,其状态仍为
REGISTERED, - 进程 A 将第 10 行更新为状态
EXECUTING。
进程 B 应该无法读取第 10 行,因为进程 A 已经读取了它并且将要更新其状态。
我应该如何解决这个问题?将读取和更新放入事务中?还是我应该使用一些版本控制方法或其他方法?
谢谢!
编辑:感谢接受的答案,我得到了它的工作并在此处记录:http://ludwigstuyck.wordpress.com/2013/02/28/concurrent-reading-and-writing-in-an-oracle-database。
【问题讨论】:
标签: c# oracle entity-framework transactions devart