Thread: Modification times in records?

Modification times in records?

From
Adam Haberlach
Date:
    I'm looking for a generalized way to set a field to 'now'
whenever a record is updated.

First, I started creating a plpgsql function for each table that
I needed this for, and then using a trigger.

Later, I realized that the functions were all identical, so I
created one function, which lukily was always updating a field
with the same name.

I'm looking for a way to specify a field name when I create the
trigger, so I can have one function and assign it to any table
with any timestamp field and have it update automagically.
I can't seem to get a parameter into the function.  Any ideas?

--
Adam Haberlach           |A cat spends her life conflicted between a
adam@newsnipple.com      |deep, passionate, and profound for fish and
http://www.newsnipple.com|an equally deep, passionate, and profound
'88 EX500                |desire to avoid getting wet.

Re: Modification times in records?

From
"Joel Burton"
Date:
On 7 Dec 2000, at 1:59, Adam Haberlach wrote:

>  I'm looking for a generalized way to set a field to 'now'
> whenever a record is updated.
>
> First, I started creating a plpgsql function for each table that
> I needed this for, and then using a trigger.
>
> Later, I realized that the functions were all identical, so I
> created one function, which lukily was always updating a field
> with the same name.
>
> I'm looking for a way to specify a field name when I create the
> trigger, so I can have one function and assign it to any table
> with any timestamp field and have it update automagically.
> I can't seem to get a parameter into the function.  Any ideas?

There's stuff in contrib/spi that handles this (IIRC, a C function
called moddatetime or something like that.) It allows you to specify
a fieldname of the datetime field,  I believe.

Plus, this should be (slightly?) faster that a PLSQL routine.

--
Joel Burton, Director of Information Systems -*- jburton@scw.org
Support Center of Washington (www.scw.org)