Thread: Specify a column without using its name

Specify a column without using its name

From
Andrew Biagioni
Date:
Hi all!

I'm trying to write a general-purpose trigger that determines what fields have
changed during an UPDATE, but I'm running into a problem.

I'm trying to dynamically select the value from a field in "old" and "new" (the
old and new values for the changed row), but I can't figure out how to do so.

I tried something like,

  qry := ''SELECT '' || fieldname || '' AS curval FROM old'';
  FOR rec IN EXECUTE qry LOOP
    fieldval := rec.curval;
    EXIT;
  END LOOP;

but it doesn't work ("ERROR:  OLD used in non-rule query").

Any suggestions?

Thanks,

        Andrew




Re: Specify a column without using its name

From
Tom Lane
Date:
Andrew Biagioni <andrew.biagioni@e-greek.net> writes:
> I'm trying to write a general-purpose trigger that determines what fields have
> changed during an UPDATE, but I'm running into a problem.

You cannot do this in plpgsql.  It's possible in pltcl though.

            regards, tom lane

Re: Specify a column without using its name

From
Andrew Biagioni
Date:
Tom Lane wrote:
Andrew Biagioni <andrew.biagioni@e-greek.net> writes: 
I'm trying to write a general-purpose trigger that determines what fields have 
changed during an UPDATE, but I'm running into a problem.   
You cannot do this in plpgsql.  It's possible in pltcl though.
That's great!  Um... how?  I'm a pl/tcl novice...  Actually I'm also a tcl novice!

Thanks,

             Andrew

			regards, tom lane