各位大神, 小弟项目中遇到一脑残需求,要求用户查询出部分数据且未释放之前,其他用户不能再查询出该部分数据。 
求教大神们如何实现? 如果数据库不能实现,那么应用层面上有没有什么办法来实现?简单讲就是 一个用户查询这部分数据 没有释放之前,其他人无法再查出来...感激不尽,只能给100分, 若解决,再开贴追加分数.

解决方案 »

  1.   

    你这个什么隔离级别的事务也实现不了不过可以在程序中这样子查询:
    select * from 你的表 where 你的条件 for update;
    但要每个查询都这样写,因如果其他查询不这样写,(select * from 你的表 where 你的条件)还是可以查的
      

  2.   

    如果是11g之后,可以用select * from table where column=xxx for update skip locked;但是前提是所有查询都用这个方式。
    这样在此会话提交之前,其他会话的查询是看不到查询命中并被锁定的记录的。
      

  3.   

    呃, 各位大侠, 如果等待, oracle 有没有类似 sql server 的 waitFor命令, 防止这个查询一直等待下去!