3

テーブル内の 1 つのレコードをロックしたい。レコードは「次より大きい ID を持つもの」として指定されます。

CREATE TABLE test (id number);

SELECT id
FROM (SELECT id 
      FROM test
      WHERE id > 10
      ORDER BY id)
WHERE ROWNUM = 1
FOR UPDATE;

これは直感的で簡単に思えます。そうではありません。何か案は?

PS

既存のクエリはカーソルであり、このカーソルの %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 に答える