我在触发器中使用以下查询来存储用户ID以供进一步用途:
SELECT set_config('session.my_username', 'john', false);
字符串
后来,在其他触发器中,我这样使用它:
SELECT current_setting('session.my_username');
型
当用户使用应用程序时,设置参数(执行第一个查询)时,它就像一个魅力。
关键是,如果开发人员/支持者试图使用某些数据库工具修改调用第二个触发器的数据,第一个触发器不会被执行。在这种情况下,开发人员/支持者会收到unrecognized configuration parameter
错误消息。
我的问题是,如何避免这种情况?有没有办法知道配置参数没有设置之前,我调用SELECT current_setting()
?
1条答案
按热度按时间hsgswve41#
对于set_config(),第三个参数中的
false
表示 * 新值应用于当前会话 *,第三个参数中的true
表示 * 新值应用于当前事务 *,如下所示:字符串
此外,当您在会话中使用从未设置过(甚至一次)的custom option时会出现错误,而当您在会话中使用已设置(至少一次)的自定义选项时不会出现错误,如下所示:
型