【问题标题】:PostgreSQL How to use standard ERROR CODE and ERROR MESSAGEPostgreSQL 如何使用标准的错误代码和错误信息
【发布时间】:2016-03-19 18:44:44
【问题描述】:

我想使用 PostgreSQL 的标准错误消息和代码。
现在,我可以实现我的目标,但我想知道我可以使用的最佳方式。
这是我当前在数据库中的功能。

CREATE OR REPLACE FUNCTION Dugong.Forget_Passwd_Add(
       in_Username varchar(255),
       in_randomURLs text
)
RETURNS void AS $$
BEGIN
        IF (SELECT Dugong.Users_isExist(in_Username)) THEN
        INSERT INTO dugong.Forget_Passwd (Username, randomURLs, used)
        VALUES (in_Username, in_randomURLs, FALSE);
        ELSE
                RAISE EXCEPTION USING ERRCODE = '20000', MESSAGE = 'Username not found';
        END IF;
END;
$$ LANGUAGE PLPGSQL;

我的Node Expresspg 模块将使用client.query()
client.query() 有回调 errresult
以我的例子在这里。我可以使用err.messageerr.code 分别获取错误消息和错误代码。
问题:
我希望我的代码能够RAISE 来自数据库端的任何错误,而不仅仅是限制我的特定错误代码。
我该怎么做?

【问题讨论】:

标签: node.js postgresql


【解决方案1】:

您可以使用raise 来抛出自定义和标准异常。

通过代码引用标准异常:

raise sqlstate '22012';

或按名称:

raise division_by_zero;

这里是list of defined error codes and names;更多关于raise的信息:“Errors and messages”。

【讨论】:

  • 假设。我希望我的代码能够raise 任何error 超出username not found。例如disk is full 错误和我现在无法想象的任何错误。我需要根据具体情况进行硬编码吗?
  • 要么硬编码,要么维护自己的错误代码和消息映射(就像stackoverflow.com/questions/2699958/… 建议的那样)。
  • 谢谢。虽然我不完全理解你的回答,但我会再次回到我的学习中谢谢你。
猜你喜欢
  • 1970-01-01
  • 2011-02-27
  • 2011-02-11
  • 2015-07-01
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多