3

我想锁定表中的一条记录。该记录被指定为“下一个 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。

4

1 回答 1

7

我认为您将需要类似的东西:

SELECT id
  FROM test
 WHERE id =
       (SELECT MIN(id) 
          FROM test
         WHERE id > 10)
FOR UPDATE;
于 2010-07-02T14:45:32.253 回答