On Fri, 20 Aug 1999, Henrique Pantarotto wrote:

> I would like to know how, from a trigger C function, can I get the "old" and
> "new" value for an updated field.  Is this possible?  How do I do that?
> 
> For example, if I do:
> 
> update users set username = "clinton" where id = "2400"

example:
-------
TupleDesc       tupdesc; 
HeapTuple       tnew,
                told;
char            *oldvalue,
                *newvalue;
        
if (TRIGGER_FIRED_BY_UPDATE(CurrentTriggerData->tg_event)) {
        tnew = CurrentTriggerData->tg_newtuple;
        told = CurrentTriggerData->tg_trigtuple;
} 
tupdesc = CurrentTriggerData->tg_relation->rd_att;

newvalue = SPI_getvalue(tnew, tupdesc, SPI_fnumber(tupdesc, "username"));
oldvalue = SPI_getvalue(told, tupdesc, SPI_fnumber(tupdesc, "username"));
------

NOTE:  If you run trigger AFTER|BEFORE insert in CurrentTriggerData
        is set 'tg_trigtuple' only.

> Did you understand?  ;-)

And you? :-)
                                                Zakkr



************

Reply via email to