Обсуждение: Specify a column without using its name
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
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
Tom Lane wrote:
Thanks,
Andrew
That's great! Um... how? I'm a pl/tcl novice... Actually I'm also a tcl novice!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.
Thanks,
Andrew
regards, tom lane