gpt4 book ai didi

postgresql - 使用 current_setting() 检查值

转载 作者:行者123 更新时间:2023-11-29 11:09:59 26 4
gpt4 key购买 nike

我正在尝试使用 current_setting()

我想到了这个:

CREATE OR REPLACE FUNCTION process_audit() RETURNS TRIGGER AS $audit$
DECLARE
user_id integer;
BEGIN
BEGIN
user_id := current_setting('hws.current_user_id');
EXCEPTION WHEN OTHERS THEN
user_id := NULL;
END;
...
RETURN NULL;
END;
$audit$ LANGUAGE plpgsql;

设置通过:

SELECT set_config('hws.current_user_id', '5', true); -- true = local setting -> only visible in current transaction

问题是,如果值无效,current_setting() 会抛出异常。我不想使用 EXCEPTION,因为我读到异常 block 很昂贵。

有没有一种方法可以在不使用异常的情况下检查设置是否具有值?

顺便说一句:我也尝试从 pg_settings 读取数据,但这似乎不适用于本地设置。

最佳答案

9.6 及更新版本:

PostgreSQL (9.6+) 支持 current_setting('setting_name', 't') 获取设置并在未设置时返回 NULL。您可以将其与 coalesce 结合使用以提供默认值。

9.5 及以上:

根据问题,如果您不介意性能下降和笨拙,您可以使用使用 BEGIN ... EXCEPTION 处理程序的 plpgsql 函数来完成.但是没有内置支持。

关于postgresql - 使用 current_setting() 检查值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17956601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com