Re: Typo in PL/pgSQL trigger Example 43.4?
"David G. Johnston" writes: > On Sat, Oct 7, 2023 at 11:11 AM Kirk Parker wrote: >> INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*; -- <= ARGUMENT IN >> QUESTION >> The emp_audit table has a column named 'userid', which in actual usage >> (next-to-last line quoted) is populated by 'user' which seems undefined in >> the context. Was that intended to be 'current_user', or am I missing >> something? > user is a valid pseudo-function: > https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INFO-SESSION Yeah, either way has the same result. However, I wonder if we should change this example to use current_user for clarity. It does look more like it's intended to be a variable or column reference than a built-in function. regards, tom lane
Re: Typo in PL/pgSQL trigger Example 43.4?
On Sat, Oct 7, 2023 at 11:11 AM Kirk Parker wrote: > > INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*; -- <= > ARGUMENT IN QUESTION > The emp_audit table has a column named 'userid', which in actual usage > (next-to-last line quoted) is populated by 'user' which seems undefined in > the context. Was that intended to be 'current_user', or am I missing > something? > user is a valid pseudo-function: https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INFO-SESSION David J.
Typo in PL/pgSQL trigger Example 43.4?
The PL/pgSQL page on triggers ( https://www.postgresql.org/docs/16/plpgsql-trigger.html ) contains the following example (I'm excerpting only the essential parts here): Example 43.4. A PL/pgSQL Trigger Function for Auditing ... CREATE TABLE emp_audit( operation char(1) NOT NULL, stamp timestamp NOT NULL, userid text NOT NULL, -- <= COLUMN IN QUESTION empnametext NOT NULL, salary integer ); CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS TRIGGER AS $emp_audit$ BEGIN -- -- Create a row in emp_audit to reflect the operation performed on emp, -- making use of the special variable TG_OP to work out the operation. -- IF (TG_OP = 'DELETE') THEN INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*; -- <= ARGUMENT IN QUESTION -- similar code with same issue follows for the other TG_OPs... The emp_audit table has a column named 'userid', which in actual usage (next-to-last line quoted) is populated by 'user' which seems undefined in the context. Was that intended to be 'current_user', or am I missing something?