25

で作業しようとしてい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たが、ローカル設定ではうまくいかないようです。

4

2 に答える 2