oracle - 如何解决 ORA-02014 : cannot select FOR UPDATE from view with DISTINCT, GROUP BY 等问题

标签 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;

这看起来很直观也很容易。但事实并非如此。有什么想法吗?

附言

我确实需要现有查询保持不变,因为它是一个游标,并且有几个地方使用了这个游标的 %rowtype。

最佳答案

我想你会需要这样的东西:

SELECT id
  FROM test
 WHERE id =
       (SELECT MIN(id) 
          FROM test
         WHERE id > 10)
FOR UPDATE;

关于oracle - 如何解决 ORA-02014 : cannot select FOR UPDATE from view with DISTINCT, GROUP BY 等问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3166615/

相关文章:

C++ 锁定后读取文件

java - 线程锁排序与简单的同步块(synchronized block)

mysql 在大表上慢选择 order by

Symfony2 createQuery 按字段排序

Mysql - 根据两列 : discounted_price and price 订购产品表

sql - ORA-00932 : inconsistent datatypes: expected NUMBER got LONG

database - 一对多关系中的标识符

javascript - 使用 JavaScript 连接到 Oracle DB

oracle - 为什么 Oracle Sql*Plus 会打印很多不需要的标题?

locking - 强制互斥体解锁(可能来自不同的线程)?