我用 for update  需要一个等待一个的去查询
for update nowait   是查到锁定的行抛错误
for update nowait skip locked  是 第二个人查不到数据了就我希望的 是  例如 第一个人查找到 前两条记录 第二个人再查跳过前两个被锁定的记录从 第三条记录继续读取  请问如何实现?

解决方案 »

  1.   

    SLEEP大牛再很久以前已经明确指出,解决这种需求要用:
    SELECT * FROM YOURTABLE WHERE ROWNUM<=2 FOR UPDATE SKIP LOCKED
      

  2.   

    你是再同一个SESSION里面测试的吗?
    你开两个PL/SQL来测试。
    应该能满足你的需求
      

  3.   

    那请问  我第一人选择相同条件的 的两行    我用 rownum<=2去取    第二个人再去取两个或者更多怎么办?  我如果rownum<=2第一个人查看的因为锁了肯定看不到 我希望他能跳过 这两句再去读 2条或者更多因为每次数量是不固定的所以  想问问有啥办法?
      

  4.   

    就是这么做的呀!你所说的第二个人我能否理解为第二个会话(SESSION)?
      

  5.   

    ORACLE锁的总结ORACLE锁的管理 ORACLE的锁机制几篇不错的文章,学习一下!~
      

  6.   

    for update skip locked
    应该可以。