1、对于任何的SQL语句,Oracle采用隐式锁定。不过,其采用的是最低级别的资源锁定。
2、可以使用记录锁定:即:select * from talbe where .. for update

解决方案 »

  1.   

    根据我的理解:
    如果只要避免记数更新冲突(同时取同一题并且后一个更新覆盖前一个更新导致漏记)
    可以使用记录锁定:即:select * from talbe where 计数最小 and 题号最小 for update
    结果是可能抽取的不是计数最小的题,按课题来看,这应该不是问题。
    如果要保证严格每次都抽取计数最小的题必须用表排它锁:
    Lock Table In EXCLUSIVE MODE
      

  2.   

    每次计数时都使用for update字句,但是可以带上skip 选项,则如果想锁的记录如果已经被锁,则忽略.这样给不会引起死锁.