Re: NEW in Rule makes another nextval call? - Mailing list pgsql-general

From Sven Willenberger
Subject Re: NEW in Rule makes another nextval call?
Date
Msg-id 1129818760.21857.18.camel@lanshark.dmv.com
Whole thread Raw
In response to Re: NEW in Rule makes another nextval call?  (Richard Huxton <dev@archonet.com>)
Responses Re: NEW in Rule makes another nextval call?  (Richard Huxton <dev@archonet.com>)
List 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


pgsql-general by date:

Previous
From: Rick Morris
Date:
Subject: Re: 'a' == 'a ' (Was: RE: [pgsql-advocacy] Oracle buysInnobase)
Next
From: Richard Huxton
Date:
Subject: Re: NEW in Rule makes another nextval call?