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