How can I get one OLD.* field in a dynamic query inside a trigger function ?

Поиск
Список
Период
Сортировка
От Bruno Baguette
Тема How can I get one OLD.* field in a dynamic query inside a trigger function ?
Дата
Msg-id 4AE27B6D.70404@gmail.com
обсуждение исходный текст
Ответы Re: How can I get one OLD.* field in a dynamic query inside a trigger function ?  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-general
Hello !

I'm trying to write a little trigger function with variable arguments
quantity (at least one, but can be 2,3,4 arguments).
Theses arguments are fields name, so only varchar variable.

Since it is a dynamic query, I use the EXECUTE statement as explained on
<http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN>

CREATE OR REPLACE FUNCTION delete_acl_trigger() RETURNS trigger AS
$delete_acl_trigger$
DECLARE
BEGIN
   FOR i IN 0 .. TG_NARGS LOOP
     EXECUTE 'SELECT delete_acl(OLD.' || TG_ARGV[i] || ');';
   END LOOP;
   RETURN OLD;
END;
$delete_acl_trigger$ LANGUAGE plpgsql;

But, when the trigger is triggered, I receive this error message :
"Query failed: ERROR: OLD used in query that is not in a rule"

How can I get the value of the OLD.' || TG_ARGV[i] field ?

Many thanks in advance !

Kind regards,

--
Bruno Baguette - bruno.baguette@gmail.com

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

Предыдущее
От: Peter Hunsberger
Дата:
Сообщение: Re: Research and EAV models
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: How can I get one OLD.* field in a dynamic query inside a trigger function ?