W Oracle, mogę wybrać górną 1 wiadomość w posortowanej tabeli zWybierz góry N z „dla aktualizacji Przejdź zablokowana” w Oracle
select messageid from(
select
messageid,
RANK() over (order by messageid asc) as msg_rank
from messages
) where msg_rank=1;
I jak odkryłem w previous question mogę wybrać wyłącznie wiersz z
select * from messages where rownum < 2 for update skip locked;
jednak nie mogę połączyć te dwa pojęcia razem
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.
Jak mogę wybrać th e top N z blokadą readpast?
Myślę, że ten blog post ma kilka istotnych myśli: http://markjbobak.wordpress.com/2010/04/06/unintended-consequences/ –