evaluating values of attributes from computed attribute names in trigger function

Поиск
Список
Период
Сортировка
От Markus Wagner
Тема evaluating values of attributes from computed attribute names in trigger function
Дата
Msg-id 3B309CCC.2CCFA2DB@imsd.uni-mainz.de
обсуждение исходный текст
Список pgsql-sql
Hi,

I need to find all changed fields in a trigger function. I found out how
to get the names of all attributes within plpgsql, but I cannot get the
value of NEW and OLD for the attribute with that name.

That is:

assume there is NEW.foo and OLD.foo

let the name 'foo' be computed and stored in variable attrname:attrname='foo'

Then, if I write NEW.attrname, it is confused with an attribute called
'attrname'.

So how can I get the changed fields in my row?
Please see my function below.

Thank you very much,

Markus


CREATE FUNCTION trg_001() RETURNS OPAQUE AS       '       DECLARE               rec     RECORD;
       BEGIN               FOR rec IN SELECT a.attname AS atr FROM pg_attribute
a,pg_class c WHERE a.attrelid = c.oid AND a.attnum > 0 AND
c.relname=TG_RELNAME LOOP                       IF NEW.atr <> OLD.atr THEN                               INSERT INTO
test(txt) VALUES (rec.atr);                       END IF;               END LOOP;               RETURN NEW;       END;
    '       LANGUAGE 'plpgsql';
 


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

Предыдущее
От: Christof Glaser
Дата:
Сообщение: Re: [ADMIN] Row Level Locking !!
Следующее
От: bboett@erm1.u-strasbg.fr (Bruno Boettcher)
Дата:
Сообщение: possible to lock a single row in table?