Re: PLPGSQL Generic query in trigger doubt

From: Ioana Danes <ioanasoftware(at)yahoo(dot)ca>
To: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>, Mauro <maurogdo(at)yahoo(dot)com(dot)br>
Subject: Re: PLPGSQL Generic query in trigger doubt
Date: 2011-08-10 15:25:52
Message-ID: 1312989952.43806.YahooMailClassic@web120108.mail.ne1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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 <maurogdo(at)yahoo(dot)com(dot)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

In response to

Browse pgsql-general by date

  From Date Subject
Next Message c k 2011-08-10 17:00:30 Re: postgresql server crash on windows 7 when using plpython
Previous Message Adrian Klaver 2011-08-10 14:04:44 Re: postgresql server crash on windows 7 when using plpython