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'; ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html