欢迎赐教,在线,急!!!

boykent 2003-04-01 12:29:27
各位大虾,我的毕业设计题目是在线考试系统,我的问题是在多个终端同时对数据库操作进行抽题的时候,为了防止重复抽题,我们制定的抽题原则是每道试题被抽后,记数加一,然后数据库按记数从小到大排列抽题时按从上到下(100条记录内)抽题。在这样的情况下,有可能出现在一条记录被抽完记数还没加一的时候,另一个终端再来抽这道题,这样的话在记数没加一之前需要对这条记录锁定,请问各位大虾如何锁定,或者有其他更妙的方法可以避免抽题重复,欢迎赐教!多谢!!!
...全文
69 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
maohaisheng 2003-04-01
  • 打赏
  • 举报
回复
DBMS_RANDOM.RANDOM
RETURN BINARY_INTEGER;
maohaisheng 2003-04-01
  • 打赏
  • 举报
回复
加行锁
select * from questiontable where id = '10001' for update nowait;

但是建议你不要这么做,不如使用一个取随机数的函数
Lastdrop 2003-04-01
  • 打赏
  • 举报
回复
你要将记录锁定,那其他终端的查询语句应该无法执行,也就是要等到解锁才能执行。那还不如,当某个终端去抽题时,先检查一个变量(存放表中),若该变量指示目前没有终端进行抽题,则先将该变量置为正在抽题(注意此时update语句的写法,加一个where判断,然后再检查是否执行了更新!),(类似获得查询锁),然后再进行抽题操作,执行完毕后再将该变量置回来。

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧