加行锁
select * from questiontable where id = '10001' for update nowait;但是建议你不要这么做,不如使用一个取随机数的函数

解决方案 »

  1.   

    DBMS_RANDOM.RANDOM
       RETURN BINARY_INTEGER;
      

  2.   

    你要将记录锁定,那其他终端的查询语句应该无法执行,也就是要等到解锁才能执行。那还不如,当某个终端去抽题时,先检查一个变量(存放表中),若该变量指示目前没有终端进行抽题,则先将该变量置为正在抽题(注意此时update语句的写法,加一个where判断,然后再检查是否执行了更新!),(类似获得查询锁),然后再进行抽题操作,执行完毕后再将该变量置回来。