HI,

The answer to the question is that you need to use session_user instead of user 
or current_user.

Cheers,
Alex


> On 9 Feb 2019, at 10:08, Alexander Reichstadt <l...@me.com> wrote:
> 
> Hi,
> 
> I setup trigger functions for logging, and while they do work and get 
> triggered, the current_user always insert “postgres” even when 
> updates/deletes/inserts are caused by users of another name.
> 
> How do I get it to use the name that caused the update? It seems current_user 
> is the trigger’s user, so the server itself in some way. This is on PG10
> 
> Here the function:
>        BEGIN
> 
>                IF      TG_OP = 'INSERT'
> 
>                THEN
> 
>                        INSERT INTO logging (tabname, schemaname, who, 
> operation, new_val)
> 
>                                VALUES (TG_RELNAME, TG_TABLE_SCHEMA, 
> current_user, TG_OP, row_to_json(NEW));
> 
>                        RETURN NEW;
> 
>                ELSIF   TG_OP = 'UPDATE'
> 
>                THEN
> 
>                        INSERT INTO logging (tabname, schemaname, who, 
> operation, new_val, old_val)
> 
>                                VALUES (TG_RELNAME, TG_TABLE_SCHEMA, 
> current_user, TG_OP,
> 
>                                        row_to_json(NEW), row_to_json(OLD));
> 
>                        RETURN NEW;
> 
>                ELSIF   TG_OP = 'DELETE'
> 
>                THEN
> 
>                        INSERT INTO logging (tabname, schemaname, operation, 
> who, old_val)
> 
>                                VALUES (TG_RELNAME, TG_TABLE_SCHEMA, TG_OP, 
> current_user, row_to_json(OLD));
> 
>                        RETURN OLD;
> 
>                END IF;
> 
>        END;
> 
> 
> 
> Cheers,
> Alex


Reply via email to