Совершить внутри процедуры? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть процедура:

CREATE OR REPLACE PROCEDURE parse_file(
        p_task_id integer
      ) AS $$
        DECLARE
          v_error_message text;
        BEGIN
          UPDATE file_task SET status = 'processing' WHERE task_id = p_task_id;
          COMMIT;

          -- do some inserts

          UPDATE file_task SET status = 'done' WHERE task_id = p_task_id;

          EXCEPTION
            WHEN OTHERS THEN
              GET STACKED DIAGNOSTICS v_error_message = MESSAGE_TEXT;
              UPDATE file_task SET status = 'failed', errors = ARRAY[v_error_message]
              WHERE task_id = p_task_id;
        END;
      $$ LANGUAGE plpgsql;

Процедура анализирует файл и управляет статусами. Как я могу выполнить фиксацию после обновления статуса до «обрабатывается», чтобы, если другое задание запускается и видит, что файл все еще обрабатывается, он ничего не делает.

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