PostgreSQL:以JSON格式返回触发错误(引发异常)

时间:2019-03-12 02:46:38

标签: postgresql error-handling plpgsql

我正在尝试找出是否有可能以 ANY 的方式退出带有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 个答案:

答案 0 :(得分:1)

RAISE statement需要格式字符串或USING子句

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