我在postgres中有搜索异常处理程序,它说要添加
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堆栈异常块。
发布于 2017-10-04 07:40:35
在PL/pgSQL块中使用EXCEPTION子句会对性能产生负面影响;请参阅错误捕获的文献中的“提示”。
无法自动处理PL/pgSQL函数中的所有顶级异常。
我的建议是,您不记录数据库函数中的错误,而是记录应用程序中的错误。首先,当您的事务回滚时,日志将消失。
https://stackoverflow.com/questions/46559257
复制相似问题