我想使用以下查询锁定一组记录:
select *
from (select *
from event_table
where status = 'S'
order by creation_data asc
)
where rownum <=10
for update;
Run Code Online (Sandbox Code Playgroud)
event_table不是视图.这是一张常规表:
create table event_table
(
id number,
creation_date date,
status number,
info clob
);
Run Code Online (Sandbox Code Playgroud)
主键是字段ID.
我可以rownum用select for update吗?
是否有其他解决方案,使用select for update但只选择一组行而不是选择的所有结果?
例如,我有一个运行每个X内部并且需要select for update用于该表的任务,但是如果select返回500行,我只想每次处理100个(分页类型).这就是我rownum为此尝试的原因.
谢谢.
我想锁定表中的一条记录.记录被指定为"ID大于......的下一个"
CREATE TABLE test (id number);
SELECT id
FROM (SELECT id
FROM test
WHERE id > 10
ORDER BY id)
WHERE ROWNUM = 1
FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)
这似乎直观而容易.但事实并非如此.有任何想法吗?
PS
我确实需要现有的查询保持不变,因为它是一个游标,有几个地方使用这个游标的%rowtype.