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.