我有一个函数创建一个临时表来存储和处理数据.问题是我想在单个事务中以1M次的顺序运行此函数,而不需要:
NOTICE: relation "foo" already exists,skipping
什么是无效的:
>改为放弃桌子
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设置就是你想要的.有很多方法可以配置它.
原文链接:/postgresql/191810.htmlSET 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 ...