dynamic plpgsql question

Поиск
Список
Период
Сортировка
От Marc Evans
Тема dynamic plpgsql question
Дата
Msg-id 20061213105033.S4899@me.softwarehackery.com
обсуждение исходный текст
Ответы Re: dynamic plpgsql question  (Erik Jones <erik@myemma.com>)
Re: dynamic plpgsql question  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
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?

For completeness, I am using version 8.2.0.

Thanks in advance - Marc

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

Предыдущее
От: "Gurjeet Singh"
Дата:
Сообщение: Re: PG Admin
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [girgen@FreeBSD.org: Re: port fault on pg_ctl's place]