Atomic UPDATE .. SELECT in Postgres
问题 I\'m building a queuing mechanism of sorts. There are rows of data that need processing, and a status flag. I\'m using an update .. returning clause to manage it: UPDATE stuff SET computed = \'working\' WHERE id = (SELECT id from STUFF WHERE computed IS NULL LIMIT 1) RETURNING * Is the nested select part the same lock as the update, or do I have a race condition here? If so, does the inner select need to be a select for update ? 回答1: While Erwin's suggestion is possibly the simplest way to