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

jva*_*jva 3 oracle locking sql-order-by ora-02014

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

DCo*_*kie 7

我想你需要这样的东西:

SELECT id
  FROM test
 WHERE id =
       (SELECT MIN(id) 
          FROM test
         WHERE id > 10)
FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)