Thread: triggers and parameters
Hello, I have a trigger function: CREATE OR REPLACE FUNCTION foo_insert () RETURNS TRIGGER AS $$ DECLARE BEGIN INSERT INTO foo SELECT * FROM -- how can I pass in the JID given that a trigger function can't take arguments? get_info ( jid ); RETURN new; END; $$ LANGUAGE 'plpgsql'; that calls a function that returns a table: CREATE OR REPLACE FUNCTION get_info (id text) RETURNS TABLE ( jid text, "timestamp" text, tabular_info text ) AS $function$ BEGIN RETURN query WITH a AS ( SELECT public.results.jid AS jid, public.results. "timestamp" AS "timestamp", regexp_split_to_table(info_out, '\n') AS tabular_info FROM public.results WHERE public.results.jid = id ) SELECT * FROM a RETURN; END; $function$ LANGUAGE plpgsql; and a trigger: CREATE TRIGGER btrigger_foo_populate AFTER INSERT ON results FOR EACH statement EXECUTE PROCEDURE foo_insert (); I want to pass a parameter (jid) that will be different for every invocation of 'foo_insert'. I can't see any way to do this in plpgsql. If it can't be done in plpgsql, is there some mechanism to accomplish the task? Thanks, Roger
On Sat, Aug 21, 2021 at 7:13 PM Roger Mason <rmason@mun.ca> wrote:
I want to pass a parameter (jid) that will be different for every
invocation of 'foo_insert'.
If jid is on the table "results" then you are good [1]. If not, how exactly would expect that to work?
David J.
David G. Johnston writes: > If jid is on the table "results" then you are good [1]. If not, how > exactly would expect that to work? > > https://www.postgresql.org/docs/current/plpgsql-trigger.html#PLPGSQL-DML-TRIGGER OK, I think I understand better now. The NEW record holds the new data and the trigger function can extract the items it needs from that record. Thanks - inviting me to read the docs more carefully was just what I needed. Roger