在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;
这不会返回空值,而是提供空字符串:
SELECT current_setting('settings.myapp.value', true);
当然,我可以解决这个问题,但我想知道是否可以以某种方式将配置参数的状态恢复到“仅事务”更改之前的状态。
SELECT nullif(current_setting('settings.myapp.value', true), '');