Re: dynamic plpgsql question

Поиск
Список
Период
Сортировка
От Erik Jones
Тема Re: dynamic plpgsql question
Дата
Msg-id 45802582.7050508@myemma.com
обсуждение исходный текст
Ответ на dynamic plpgsql question  (Marc Evans <Marc@SoftwareHackery.Com>)
Ответы Re: dynamic plpgsql question  (Marc Evans <Marc@SoftwareHackery.Com>)
Список pgsql-general
Marc Evans wrote:
> Hi -
>
> I am struggling with a trigger function in plpgsql, and am hoping that
> someone on this list can't show me a way to do what I need.
>
> In the trigger, TG_ARGV[0] is the name of a column that I want to
> evaluate. This code shows the concept, though is not functional:
>
> CREATE OR REPLACE FUNCTION foo() RETURNS TRIGGER AS $$
>   DECLARE
>     column_name TEXT := TG_ARGV[0];
>     data TEXT;
>   BEGIN
>     EXECUTE 'SELECT NEW.' || column_name INTO data;
>     -- ...
>   END;
> $$ LANGUAGE plpgsql;
>
> When I try to use that code, I receive:
>
> c3i=> insert into test_table values (1,1);
> ERROR:  NEW used in query that is not in a rule
> CONTEXT:  SQL statement "SELECT NEW.magic"
>
> How can I get the value of NEW.{column_name} (aka NEW.magic in this
> specific test case) into the variable data?
EXECUTE 'SELECT ' || NEW.column_name ';' INTO data;

--
erik jones <erik@myemma.com>
software development
emma(r)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: A VIEW mimicing a TABLE
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Online index builds