Re: NEW in Rule makes another nextval call?

From: Sven Willenberger <sven(at)dmv(dot)com>
To: Richard Huxton <dev(at)archonet(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: NEW in Rule makes another nextval call?
Date: 2005-10-20 14:32:40
Message-ID: 1129818760.21857.18.camel@lanshark.dmv.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Thu, 2005-10-20 at 15:01 +0100, Richard Huxton wrote:
> Sven Willenberger wrote:
> > Is this intended behavior? or is the NEW
> > acting as a macro that is replace by "nextval(<sequence name>)" ?
>
> Well, it's understood behaviour even if not quite "intended".
>
> You are quite right, rules basically act like macros with all the
> limitations they have. What is actually happening behind the scenes is
> that the query is being rewritten to alter the query-plan tree. You
> should be able to get your rule to work by referring to
> currval(<sequence-name>) rather than NEW.custid.
>
> However, in this particular case I think you want an after insert
> trigger on customer rather than a rule.
>

As as AFTER INSERT trigger, I can safely assume here that NEW.custid wil
now properly use the actual value of the custid rather than nextval()? I
have dropped the rule and created the AFTER INSERT trigger so I guess I
will find out shortly enough :-)

Thanks,

Sven

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Richard Huxton 2005-10-20 14:34:37 Re: NEW in Rule makes another nextval call?
Previous Message Rick Morris 2005-10-20 14:24:50 Re: 'a' == 'a ' (Was: RE: [pgsql-advocacy] Oracle buysInnobase)