Verificar valor com current_setting ()
Estou tentando trabalhar comcurrent_setting()
.
Eu vim com isso:
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;
A configuração é definida via:
SELECT set_config('hws.current_user_id', '5', true); -- true = local setting -> only visible in current transaction
O problema é quecurrent_setting()
lança uma exceção se o valor não for válido. Eu não quero usarEXCEPTION
porque eu li que os blocos de exceção são caros.
Existe uma maneira de verificar se a configuração tem um valor sem usar exceções?
Btw: Eu também tentei lerpg_settings
mas isso não parece funcionar com configurações locais.