标签: ora-02014

如何解决ORA-02014:无法从DISTINCT,GROUP BY的视图中选择FOR UPDATE

我想使用以下查询锁定一组记录:

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.

我可以rownumselect for update吗?

是否有其他解决方案,使用select for update但只选择一组行而不是选择的所有结果?

例如,我有一个运行每个X内部并且需要select for update用于该表的任务,但是如果select返回500行,我只想每次处理100个(分页类型).这就是我rownum为此尝试的原因.

谢谢.

oracle ora-02014

9
推荐指数
1
解决办法
1万
查看次数

如何解决ORA-02014:无法从DISTINCT,GROUP BY等视图中选择FOR UPDATE

我想锁定表中的一条记录.记录被指定为"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.

oracle locking sql-order-by ora-02014

3
推荐指数
1
解决办法
5181
查看次数

标签 统计

ora-02014 ×2

oracle ×2

locking ×1

sql-order-by ×1