Postgres Поднять все исключения в конце выполнения файла - PullRequest
0 голосов
/ 12 марта 2020
DO $$
BEGIN
  -- Check to make sure that event starts after users created
  IF EXISTS (
    SELECT users.id
    FROM event
    INNER JOIN users ON event.user_id::INT = users.id
    WHERE event.start > users.created
  )
  THEN
    RAISE NOTICE 'SUCCESSFUL %', now();
  ELSE
    RAISE EXCEPTION 'ERROR on % - All Event start timestamps must be created after users are created',now();
  END IF;

END $$;

Это исключение для проверки временных меток и работает хорошо. Но я хочу добавить подобное условие и еще как минимум 3 условия исключения. Я хочу теперь вернуть исключения в конце. Я не хочу, чтобы процесс останавливался, если первая проверка не удалась. Я хочу, чтобы все проваленные тесты были подняты сразу в конце. Как я могу это сделать ? Я читал о диагностике с накоплением, но не знаю, правильный ли это подход, или я должен просто использовать IF-else, если?

1 Ответ

1 голос
/ 12 марта 2020

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

Вы можете собрать все исключения в (временную?) Таблицу и передать их клиенту в завершить или объединить их в одно большое исключение.

Вы также можете отправить отдельные сообщения как NOTICE и выбросить исключение в конце.

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