evaluating values of attributes from computed attribute names in trigger function - Mailing list pgsql-sql

From Markus Wagner
Subject evaluating values of attributes from computed attribute names in trigger function
Date
Msg-id 3B309CCC.2CCFA2DB@imsd.uni-mainz.de
Whole thread Raw
List 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 by date:

Previous
From: Christof Glaser
Date:
Subject: Re: [ADMIN] Row Level Locking !!
Next
From: bboett@erm1.u-strasbg.fr (Bruno Boettcher)
Date:
Subject: possible to lock a single row in table?