Postgres 10
Я пытаюсь использовать «ЗАПРЕЩЕНО ДЛЯ ПЕРЕХОДА ОБНОВЛЕНИЙ», чтобы создать рабочую очередь в Postgres.
Моя цель - установить статус «завершен» или«Сбой» в качестве результата с помощью «ROLLBACK TO SAVEPOINT;»в случае сбоя обработки.
Я ожидал, что приведенный ниже код приведет к окончательному состоянию «сбой», но, похоже, окончательный статус «ожидание».
BEGIN;
DROP TABLE IF EXISTS foo;
SELECT id
INTO foo
FROM jobs
WHERE status = 'waiting'
AND status != 'failed'
ORDER BY created ASC
FOR UPDATE SKIP LOCKED
LIMIT 1;
UPDATE jobs SET status = 'failed' WHERE id = (SELECT id from foo) RETURNING *;
SAVEPOINT blah;
UPDATE jobs SET status = 'complete' WHERE id = (SELECT id from foo) RETURNING *;
ROLLBACK TO SAVEPOINT blah;
МожетКто-нибудь, пожалуйста, подскажите, что я могу сделать, чтобы использовать COMMIT, чтобы статус был «завершен», или ROLLBACK TO SAVEPOINT, бла, если статгус «провалился»?
спасибо!