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 <lxr@xxxxxx> 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