1

我的请求表上有“valid_id”检查约束。但是当它违反约束时,它会显示以下错误

错误:关系“请求”的新行违反检​​查约束“valid_name”详细信息:失败行包含...。

但不是那样,我想显示“插入记录失败。需要名称”之类的消息。

有什么方法可以在 PostgreSQL 中显示自定义错误消息?

4

1 回答 1

1

这是一种高级领域,因为您希望在开始之前非常熟悉 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 状态。

于 2013-04-21T10:06:48.760 回答