【发布时间】:2019-02-20 06:41:20
【问题描述】:
我有一张桌子:
table foo{
bar number,
status varchar2(50)
}
我有多个线程/主机,每个都在使用该表。每个线程更新状态,即悲观地锁定行。
在甲骨文 12.2 中。
select ... for update skip locked 似乎可以完成这项工作,但我想限制行数。新的FETCH NEXT 听起来不错,但我的语法不正确:
SELECT * FROM foo ORDER BY bar
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY
FOR UPDATE SKIP LOCKED;
实现这一目标的最简单方法是什么,即使用最少的代码1(最好没有 pl/sql 函数)?
我想要这样的东西:
select * from (select * from foo
where status<>'baz' order by bar
) where rownum<10 for update skip locked
PS 1. 我们正在考虑放弃 oracle。
【问题讨论】:
-
与java无关