True, although a trigger have the benefit of being able to capture the value before it was changed allowing some measure of versioning in your data which can be a lifesaver...
I don't use this for all tables, only the ones with important information in them, like people, accounts, etc.
I actually have two fields, tsCreated and tsUpdated, both which default to now(). When I do an update, I set the value of tsUpdated to now(). The tsCreated field is always left alone. This way, I always know when the record was created and last updated.
This is much simpler than using triggers to update a separate audit table.
Subject: Re: [GENERAL] Determining when a row was inserted
Reply at bottom...
On Fri, 2005-06-03 at 12:53, Wiebe de Jong wrote: > The way I do it is to add a timestamp field with a default value of now(). > Unfortunately, this won't help with any records that have already been > created. > > Wiebe > > -----Original Message----- > From: pgsql-general-owner@postgresql.org > [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Terry Lee Tucker > Sent: Thursday, June 02, 2005 5:51 AM > To: pgsql-general@postgresql.org > Subject: Re: [GENERAL] Determining when a row was inserted > > I don't think there is a way to do that. You'll have to create an audit > table > and a rule to update it or you'll have to add a column to the table and a > trigger to update it. > > On Thursday 02 June 2005 01:22 am, Eisenhut, Glenn saith: > > Folks - hi > > > > Is it possible to determine when a row was inserted into a table using the > > system catalogs or such. I have the situation where I need to find out > when > > a user was added to a user table - the table was not setup with a date to > > track this.
There are plenty of examples of a trigger to do this so that ANY time the row is updated, or when it's inserted, the timestamp gets updated to now() or timeofday.