我有一个使用临时表的函数,如果存在,则必须删除该函数。
drop table if exists t_xy;
create temp table t_xy on commit drop as select ...;
随后,我在视图中使用此函数。在选择过程中多次调用该函数。我喜欢使用"引发通知"命令,因为它几乎是报告函数中任何变量以进行调试的唯一可靠方法。问题是我必须在大量不需要的行中搜索它们,例如:
注意:表"t_xy"不存在,跳过上下文:SQL 语句"如果存在t_xy则删除表PL/pgSQL 函数 f_pending_operations(uuid( line5 in SQL 命令
有没有办法抑制此类不是由raise notice
命令生成的通知,而是通过drop table if exists
或删除其他对象生成的通知?将"client_min_messages"选项设置为"调试"会使问题变得更糟。
您可以使用本地设置为 client_min_messages
的任何命令将通知从客户端静音:
SET LOCAL client_min_messages = warning; -- "debug" would have opposite effect
DROP TABLE if exists t_xy;
-- RESET client_min_messages;
如果您不发布RESET
则实际上使交易其余部分的通知保持沉默。手册:
SET LOCAL
的影响仅持续到当前事务结束
或者,您可以在从命令行的调用中设置client_min_messages
(在会话期间(:
- 如何在运行 psql 脚本时禁止显示 INFO 消息
您还可以使用 GUC 参数降低消息的详细程度:
set log_error_verbosity='terse';
当然可以在功能级别设置。