用自定义错误抑制PostgreSQL错误的方法



在过去的几个小时里,我一直在处理这个问题,我想要一个自定义错误("错误的airline_id。请再次检查您的输入"(,而不是正常的错误代码(在表上插入或更新"飞行计划"违反了外键约束"fk_flightplan_airline"(。

但无论我尝试什么,我总是会得到标准的错误。请帮忙。

CREATE OR REPLACE FUNCTION add_flight(
PLAN_ID INT,
AIRLINE_ID INT,
STATUS_ID INT)
RETURNS void AS $BODY$
BEGIN
INSERT INTO flight.flightgplan VALUES(
PLAN_ID,
AIRLINE_ID,
STATUS_ID);
IF airline_id > 8 THEN RAISE EXCEPTION USING errcode = 99881;
ELSE IF status_id > 10 THEN RAISE EXCEPTION USING errcode = 99882;
END IF;
EXCEPTION
WHEN SQLSTATE '99881' THEN raise EXCEPTION 'Wrong airline_id. Please check your input again';
WHEN SQLSTATE '99882' THEN raise EXCEPTION 'Wrong status_id. Please check your input again';
END;
$BODY$ LANGUAGE plpgsql;

在执行插入之前应该抛出自定义异常,这样插入就不会执行:

IF airline_id > 8 THEN RAISE EXCEPTION USING errcode = 99881;
ELSE IF status_id > 10 THEN RAISE EXCEPTION USING errcode = 99882;
END IF;
INSERT INTO flight.flightgplan VALUES(
PLAN_ID,
AIRLINE_ID,
STATUS_ID);

相关内容

最新更新