我想和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
,因为我读到异常块很昂贵.
有没有办法在不使用异常的情况下判断设置是否有值?
顺便说一句:我也试着阅读pg_settings
本书,但在当地环境下似乎不起作用.