Я использую node.js, node-postgres и Postgres, чтобы собрать скрипт для обработки большого количества данных из таблицы. Я также использую кластерный модуль, поэтому я не зацикливаюсь на одном потоке.
Я не хочу, чтобы один из дочерних процессов в кластере дублировал обработку другого. Как я могу обновить строки, которые я только что получил из запроса выбора, без возможности другого процесса или запроса, также выбравших те же строки?
Я предполагаю, что мой SQL-запрос будет выглядеть примерно так:
BEGIN;
SELECT * FROM mytable WHERE ... LIMIT 100;
UPDATE mytable SET status = 'processing' WHERE ...;
COMMIT;
Приношу свои извинения за плохое знание Postgres и SQL, я использовал его раньше в простом веб-приложении PHP и никогда раньше с node.js.
FOR UPDATE
, используя что-то вроде этого: stackoverflow.com/questions/18879584/ - person Anthony   schedule 02.01.2015FOR UPDATE
, я не уверен, что он делает именно то, что я хочу делать. - person Thomas Foster   schedule 02.01.2015