PostgreSQL: вернуть ошибку триггера (вызвать исключение) в формате JSON - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь выяснить, возможно ли ЛЮБОЙ способ выйти из процедуры триггера (исключение возврата / повышения, что угодно) с выводом JSON. Я хочу сделать что-то вроде этого:

CREATE FUNCTION users_do_before_insert() RETURNS TRIGGER AS
  $$
  BEGIN
    IF (NEW.username = '' OR NEW.full_name = '' OR NEW.email = '') THEN
      RAISE EXCEPTION json_build_object('error', 'All fields are mandatory.');
    END IF;

    RETURN NEW;
  END;
  $$
LANGUAGE 'plpgsql';

CREATE TRIGGER users_bi_trigger
  BEFORE INSERT ON users
  FOR EACH ROW
  EXECUTE PROCEDURE users_do_before_insert();

Итак, ожидаемый результат будет:

{"error" : "All fields are mandatory."}

Буду признателен за любую помощь с этим. Заранее спасибо!

1 Ответ

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

RAISE для оператора требуется строка формата или USING предложение

RAISE EXCEPTION '%', json_build_object(..);
RAISE EXCEPTION USING MESSAGE=json_build_object(..);
...