我正在尝试与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
但这似乎不适用于本地设置。