- Архив списков рассылки pgsql-sql

Поиск
Список
Период
Сортировка
От Ken Winter
Тема
Дата
Msg-id 004e01c5f0ae$c4d4bfe0$6503a8c0@kenxp
обсуждение исходный текст
Ответы Re:  (Oliver Elphick <olly@lfix.co.uk>)
Список pgsql-sql
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



В списке pgsql-sql по дате отправления:

Предыдущее
От: Michael Fuhr
Дата:
Сообщение: Re: what is going on in the PostgreSQL
Следующее
От: "Leif B. Kristensen"
Дата:
Сообщение: Index wonder