Postgres Session数据异常

问题描述 投票:0回答:1

我在postgres.conf文件中有一个会话变量,user.user_id =0。我使用set_config('user.user_id', '1234'::text, FALSE)将其设置为1234

问题是,当我使用RAISE EXCEPTION时,或者如果代码中存在任何EXCEPTION,则current_setting('user.user_id')的值将返回为0(值已重置),我甚至尝试使用临时表并存储会话数据用户表中的.user_id,我甚至在异常上丢失TEMP表(获取错误:关系不存在),我的理解是对EXCEPTION的会话数据丢失。我对吗 ?有没有一种方法可以解决此问题,在异常情况下以其他方式保留会话数据。

请咨询。

postgresql exception
1个回答
0
投票

首先,我假设您的意思是postgresql.conf,而不是postgres.conf。其次,这些设置是全局的。您通过使用set_config使其特定于会话:

https://www.postgresql.org/docs/12/functions-admin.html#FUNCTIONS-ADMIN-SET

“ set_config将参数setting_name设置为new_value。如果is_local为true,则新值将仅应用于当前事务。如果希望新值应用于当前会话,请使用false。”]

TEMP表也是特定于会话/事务的,具体取决于它们的创建方式。如果要保留该信息,则需要将其存储在永久表中。到那时,我可能会摆脱postgresql.conf设置,这是进行版本升级的另一件事。

© www.soinside.com 2019 - 2024. All rights reserved.