Atomic UPDATE .. SELECT no Postgres

Eu estou construindo um tipo de mecanismo de enfileiramento. Existem linhas de dados que precisam de processamento e um sinalizador de status. Estou usando umupdate .. returning cláusula para gerenciá-lo:

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

A parte de seleção aninhada é o mesmo bloqueio da atualização ou tenho uma condição de corrida aqui? Se sim, a seleção interna precisa ser umselect for update?

questionAnswers(2)

yourAnswerToTheQuestion