我的请求表上有“valid_id”检查约束。但是当它违反约束时,它会显示以下错误
错误:关系“请求”的新行违反检查约束“valid_name”详细信息:失败行包含...。
但不是那样,我想显示“插入记录失败。需要名称”之类的消息。
有什么方法可以在 PostgreSQL 中显示自定义错误消息?
我的请求表上有“valid_id”检查约束。但是当它违反约束时,它会显示以下错误
错误:关系“请求”的新行违反检查约束“valid_name”详细信息:失败行包含...。
但不是那样,我想显示“插入记录失败。需要名称”之类的消息。
有什么方法可以在 PostgreSQL 中显示自定义错误消息?
这是一种高级领域,因为您希望在开始之前非常熟悉 SQL 状态以及现有的错误消息。请注意,您希望适当地重新使用现有的 sql 状态,以便应用程序不知道您已经覆盖了检查约束。
但是您可以做的是创建一个运行检查并raise exception
在检查失败时发出 a 的函数。就像是:
CREATE FUNCTION check_is_not_null(value text, column_name text) RETURNS BOOL
LANGUAGE plpgsql AS $$
begin
IF $1 IS NULL THEN
RAISE EXCEPTION 'Error: % is required', $2;
END IF;
RETURN TRUE;
END;
$$;
如果您使用的是 8.4 或更高版本,则可以指定 SQL 状态。