Hi Mauro, If you try to determine what fields were changed you can check this post:
http://jaime2ndquadrant.blogspot.com/ It might work for you. Ioana --- On Wed, 8/10/11, Mauro <mauro...@yahoo.com.br> wrote: Hi, good morning list I'm writing a generic trigger in plpgsql to provide a system log to my system, but I'm stopped with the folow problem: Example: TABLE STRUCT:table1 fldA VARCHAR fldB VARCHAR fldC VARCHAR FUNCTION: DECLARE myrecord RECORD; -- record that will be storing field names from internal postres tables fieldtest NAME; -- actual field name parsing BEGIN -- Generic function to automatize the log of changes -- 1st, discover the field names from a table FOR myrecord IN SELECT att.attname FROM pg_attribute att, pg_class cls WHERE cls.oid = att.attrelid AND att.attnum > 0 AND cls.relname = TG_RELNAME limit 1 LOOP -- storing the actual field name fieldtest = myrecord.attname; /* Here I'd like to do a parse in the 'fieldtest' variable to teste if the new value is diferent of the old value. The problem is: Variable name: fieldtest Variable content: fldA How I can test the two records (new and old)? -- new.fieldtest = fieldtest is not a field name to new record -- new."fieldtest" = fieldtest is not a field name to new record -- new.(fieldtest) = plpgsql can not do a parser in this -- 'new.' || fieldtest = this is a string and can not be evaluate */ END LOOP; -- Returning RETURN NEW; END; Mauro Gonçalves