Как я могу использовать Postgres "ROLLBACK TO SAVEPOINT" с "FOR UPDATE SKIP LOCKED"? - PullRequest
0 голосов
/ 26 августа 2018

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, бла, если статгус «провалился»?

спасибо!

1 Ответ

0 голосов
/ 05 декабря 2018

кажется, что вы никогда не совершали никаких изменений, поэтому извне никаких изменений не будет видно, пока вы не сделаете это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...