首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在postgres中执行全局异常处理程序?

如何在postgres中执行全局异常处理程序?
EN

Stack Overflow用户
提问于 2017-10-04 07:25:40
回答 1查看 1.2K关注 0票数 3

我在postgres中有搜索异常处理程序,它说要添加

代码语言:javascript
复制
DECLARE
  text_var1 text;
  text_var2 text;
  text_var3 text;
BEGIN
  -- some processing which might cause an exception
  ...
EXCEPTION WHEN OTHERS THEN
  GET STACKED DIAGNOSTICS text_var1 = MESSAGE_TEXT,
                          text_var2 = PG_EXCEPTION_DETAIL,
                          text_var3 = PG_EXCEPTION_HINT;
-- call a function which log all this variable perform log_function (text_var1 ,text_var2 , text_var3 );
END;

如果我对每个函数都这样做,这是有效的吗?

这种方法有什么性能缺陷吗?

我们不能为所有函数设置一个全局异常处理程序吗?在这种方法中,我为每个函数添加了异常处理程序。

然后将它们保存在变量中,并为此保存日志。我们能有任何全局错误处理程序吗?

编辑

我必须将所有出现在postgres中的异常记录到一个表中。我正在遵循这一步骤。

1)在所有函数中写入GET堆栈块(如果我有20个函数,则在所有函数中编写这个块)

(2)在表中进行日志记录。

我想要的是在postgres中应该有全局异常处理程序的机制,这样我就不必在postgres中为所有函数编写GET堆栈异常块。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-04 07:40:35

在PL/pgSQL块中使用EXCEPTION子句会对性能产生负面影响;请参阅错误捕获的文献中的“提示”。

无法自动处理PL/pgSQL函数中的所有顶级异常。

我的建议是,您不记录数据库函数中的错误,而是记录应用程序中的错误。首先,当您的事务回滚时,日志将消失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46559257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档