【发布时间】:2011-04-25 18:14:36
【问题描述】:
在 Oracle 中,我可以选择排序表中的前 1 条消息
select messageid from(
select
messageid,
RANK() over (order by messageid asc) as msg_rank
from messages
) where msg_rank=1;
正如我在previous question 中发现的那样,我可以用
专门选择一行select * from messages where rownum < 2 for update skip locked;
但是我不能将这两个概念合并在一起
select messageid from(
select
messageid,
RANK() over (order by messageid asc) as msg_rank
from messages
) where msg_rank=1 for update skip locked;
-- results in error
-- ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc.
如何使用 readpast 锁定选择前 N 个?
【问题讨论】:
-
我觉得这篇博文有一些相关的想法:markjbobak.wordpress.com/2010/04/06/unintended-consequences