Umgehung von ORA-02014: FOR UPDATE kann in der Ansicht nicht mit DISTINCT, GROUP BY usw. ausgewählt werden.

Ich möchte einen Datensatz in einer Tabelle sperren. Der Datensatz wird als "der nächste mit einer ID größer als ..." angegeben.

CREATE TABLE test (id number);

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

Das scheint intuitiv und einfach zu sein. Aber es ist nicht. Irgendwelche Ideen

P.S.

Ich benötige die vorhandene Abfrage, um gleich zu bleiben, da es sich um einen Cursor handelt und es mehrere Stellen gibt, die den% Zeilentyp dieses Cursors verwenden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage