Dynamic column name in pgsql trigger function

From: "Guy Rouillier" <guyr(at)masergy(dot)com>
To: <pgsql-interfaces(at)postgresql(dot)org>
Subject: Dynamic column name in pgsql trigger function
Date: 2005-02-09 00:29:54
Message-ID: CC1CF380F4D70844B01D45982E671B2348E5D6@mtxexch01.add0.masergy.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

We have several trigger functions that all do a similar thing: get the
next value from a sequence and assign the value to the primary key
column of a table before insert. I thought I would combine all these
into a single trigger function that takes the sequence name and column
name as input parameters. Here is what I have so far, which does *not*
work:

CREATE OR REPLACE FUNCTION assign_seq() RETURNS trigger AS $$
BEGIN
NEW.TG_ARGV[1] := (select TG_ARGV[0].NEXTVAL);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;

It complains about the "." after NEW. If I remove that argument and
hard-code a column name, it works. That is, it allows the dynamic
sequence name in the select.

Can I do what I'm trying to do? Or will I just have to code separate
trigger functions for each table? Thanks.

--
Guy Rouillier

Browse pgsql-interfaces by date

  From Date Subject
Next Message Greg Stark 2005-02-09 03:36:58 Re: Problem with asynchronous connect in 8.0.1
Previous Message mjc 2005-02-08 23:27:10 Can you bind output variables?