Sprawdź wartość za pomocą current_setting ()

Próbuję pracowaćcurrent_setting().

Wymyśliłem to:

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;

Ustawienie ustawia się za pomocą:

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

Problemem jestcurrent_setting() zgłasza wyjątek, jeśli wartość jest niepoprawna. Nie chcę używaćEXCEPTION ponieważ czytałem, że bloki wyjątków są drogie.

Czy istnieje sposób sprawdzenia, czy ustawienie ma wartość bez użycia wyjątków?

Btw: Próbowałem też czytaćpg_settings ale to nie wydaje się działać z lokalnymi ustawieniami.

questionAnswers(1)

yourAnswerToTheQuestion