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
?