postgresql – 使用“CREATE … IF NOT EXISTS”时抑制“通知:存在关系”

前端之家收集整理的这篇文章主要介绍了postgresql – 使用“CREATE … IF NOT EXISTS”时抑制“通知:存在关系”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个函数创建一个临时表来存储和处理数据.问题是我想在单个事务中以1M次的顺序运行此函数,而不需要:
NOTICE:  relation "foo" already exists,skipping

输出~1M次.有没有一种有效的方法呢?

什么是无效的:

>改为放弃桌子

DROP TABLE IF EXISTS

>导致共享内存耗尽

>捕获duplicate_table异常(效率低于使用IF NOT EXISTS?)

BEGIN
    CREATE TEMPORARY TABLE foo () ON COMMIT DROP;
EXCEPTION
    WHEN duplicate_table THEN --do nothing
END;
正如其他人所指出的那样,client_min_messages设置就是你想要的.有很多方法可以配置它.

SET client_min_messages = error或SELECT set_config(‘client_min_messages’,’error’,false)将保留当前会话/连接的其余部分.

SET LOCAL client_min_messages = error或SELECT set_config(‘client_min_messages’,true)在当前事务结束时重置.

CREATE FUNCTION语句的SET子句仅将设置范围限定为此函数;这听起来像是你最合适的选择.例如:

CREATE FUNCTION f()
  RETURNS void
  SET client_min_messages = error
  LANGUAGE plpgsql
  AS ...
原文链接:/postgresql/191810.html

猜你在找的Postgre SQL相关文章