Atomic UPDATE .. SELECT in Postgres

Ich baue eine Art Warteschlangenmechanismus. Es gibt Datenzeilen, die verarbeitet werden müssen, und ein Statusflag. Ich benutze eineupdate .. returning Klausel, um es zu verwalten:

UPDATE stuff
SET computed = 'working'
WHERE id = (SELECT id from STUFF WHERE computed IS NULL LIMIT 1)
RETURNING * 

Ist das verschachtelte ausgewählte Teil dasselbe Schloss wie das Update, oder habe ich hier eine Racebedingung? Wenn ja, muss die innere Auswahl a seinselect for update?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage