Re: Very strange 'now' behaviour in nested triggers.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Denis Zaitsev <zzz(at)anda(dot)ru>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Very strange 'now' behaviour in nested triggers.
Date: 2003-07-27 15:49:10
Message-ID: 4629.1059320950@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc pgsql-sql

Denis Zaitsev <zzz(at)anda(dot)ru> writes:
> On Sat, Jul 26, 2003 at 10:31:44AM -0400, Tom Lane wrote:
>> That's a dangerous way to define the default --- 'now' is taken as a
>> literal of type timestamp, which means it will be reduced to a timestamp
>> constant as soon as a statement that requires the default is planned.

> Aaa... So, the INSERT inside a trigger will use the 'now' for the
> time this trigger is compiled (i.e. called first time)? Do I
> understand right? And the only outer trigger uses the right 'now' as
> its value goes from the top-level INSERT...

Right.

I put up a proposal in pgsql-hackers to change this behavior:
http://archives.postgresql.org/pgsql-hackers/2003-07/msg00818.php
If we made that change then the "wrong" way of defining the default
would fail in an obvious fashion --- the 'now' would get reduced to a
particular time immediately at CREATE TABLE. Doubtless this would annoy
some people, but the "right" way of defining the default isn't really
any harder, and it would save folks from getting burnt in corner cases,
like you were.

Any comments?

regards, tom lane

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Roberto Mello 2003-07-28 00:27:54 Re: Very strange 'now' behaviour in nested triggers.
Previous Message Denis Zaitsev 2003-07-27 11:09:51 Re: Very strange 'now' behaviour in nested triggers.

Browse pgsql-sql by date

  From Date Subject
Next Message Roberto Mello 2003-07-28 00:27:54 Re: Very strange 'now' behaviour in nested triggers.
Previous Message Denis Zaitsev 2003-07-27 11:09:51 Re: Very strange 'now' behaviour in nested triggers.