如何删除配置参数

时间:2018-06-19 08:31:43

标签: postgresql postgresql-9.6 postgresql-10

在Postgres中,可以创建自己的配置参数,例如“cookie”,它会在会话或事务期间持续存在。

这样做是这样的:

SELECT set_config(setting_name, new_value, is_local)
or
SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }

本地应该仅在事务持续时间内持续存在,但即使在事务之后它确实会影响配置参数 - 而不是所述参数无法识别,现在它将被设置为空字符串。

问题

如何在不重新连接的情况下再次识别所述参数?

这不起作用:

SELECT set_config('settings.myapp.value', null, true);
RESET settings.myapp.value;

这不会返回NULL,而是提供空字符串:

SELECT current_setting('settings.myapp.value', true);

我当然可以解决这个问题,但我想知道我是否可以某种方式将配置参数状态恢复到“仅交易”更改之前的状态。

SELECT nullif(current_setting('settings.myapp.value', true), '');

1 个答案:

答案 0 :(得分:1)

你不能那样做。

如果创建一个新参数,它将被创建为“占位符”参数。 如果以后加载定义该参数的模块,则该模块将即时转换为“真实”参数。

但是在数据库会话的生存期内无法删除参数。