Mit current_setting () auf Wert prüfen
Ich versuche mit zu arbeitencurrent_setting()
.
Das habe ich mir ausgedacht:
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;
Die Einstellung erfolgt über:
SELECT set_config('hws.current_user_id', '5', true); -- true = local setting -> only visible in current transaction
Das Problem ist, dasscurrent_setting()
Löst eine Ausnahme aus, wenn der Wert ungültig ist. Ich möchte nicht verwendenEXCEPTION
weil ich gelesen habe, dass Ausnahmeblöcke teuer sind.
Gibt es eine Möglichkeit zu überprüfen, ob die Einstellung einen Wert hat, ohne Ausnahmen zu verwenden?
Btw: Ich habe auch versucht, aus zu lesenpg_settings
aber das scheint nicht mit lokalen Einstellungen zu funktionieren.