pg.ddx.io pgsql-sql@postgresql.org mailing list archive
help / color / mirror / Atom feedVariable column names in PL/pgSQL RECORD referencces
2+ messages / 2 participants
[nested] [flat]
* Variable column names in PL/pgSQL RECORD referencces
@ 2005-11-25 18:01 Ken Winter <ken@sunward.org>
2005-11-25 19:22 ` Re: Variable column names in PL/pgSQL RECORD referencces Tom Lane <tgl@sss.pgh.pa.us>
0 siblings, 1 reply; 2+ messages in thread
From: Ken Winter @ 2005-11-25 18:01 UTC (permalink / raw)
To: pgsql-sql
(Sorry for the redundancy - I sent this query earlier but forgot to put a
title on it. Seems like it would be more useful with a title, so here it is
again. If there's a moderator who can delete my earlier message, please do
so.)
In PL/pgSQL, is there a way to put a *variable* column-name in a dot
notation reference to a RECORD column?
For example, suppose I want to write a function like the following, which is
to be called by a "BEFORE INSERT" trigger:
CREATE OR REPLACE FUNCTION foo ( ) RETURNS TRIGGER AS
'
DECLARE
var VARCHAR;
BEGIN
var := TG_ARGV[0]
NEW.<the column whose name is the value of var> := ''whatever'';
RETURN NEW;
END;
'
LANGUAGE 'plpgsql'
;
The aim of this uninteresting function is to assign the value 'whatever' to
the table column that is passed in by the calling trigger as TG_ARGV[0],
i.e. the first calling argument.
What I don't know is what to put into the dot notation in place of ".<the
column whose name is the value of var>" so that the column of NEW that is
addressed by the assignment statement is the one passed in as the first
argument. Is there any PL/pgSQL construct that could be substituted in here
to achieve this result?
If not, can anybody suggest a way to write a trigger-called function that
would accomplish the same result?
In case it's not obvious, the underlying goal is to write a single
trigger-called function that could modify different columns for each trigger
that called it, where each trigger specified the target column by a calling
argument (or by any other viable mechanism).
~ TIA
~ Ken
^ permalink raw reply [nested|flat] 2+ messages in thread
* Re: Variable column names in PL/pgSQL RECORD referencces
2005-11-25 18:01 Variable column names in PL/pgSQL RECORD referencces Ken Winter <ken@sunward.org>
@ 2005-11-25 19:22 ` Tom Lane <tgl@sss.pgh.pa.us>
0 siblings, 0 replies; 2+ messages in thread
From: Tom Lane @ 2005-11-25 19:22 UTC (permalink / raw)
To: Ken Winter <ken@sunward.org>; +Cc: pgsql-sql
"Ken Winter" <ken@sunward.org> writes:
> In PL/pgSQL, is there a way to put a *variable* column-name in a dot
> notation reference to a RECORD column?
No. Some of the other, less-strongly-typed PLs can do it.
regards, tom lane
^ permalink raw reply [nested|flat] 2+ messages in thread
end of thread, other threads:[~2005-11-25 19:22 UTC | newest]
Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2005-11-25 18:01 Variable column names in PL/pgSQL RECORD referencces Ken Winter <ken@sunward.org>
2005-11-25 19:22 ` Tom Lane <tgl@sss.pgh.pa.us>
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox