| 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: | Whole Thread | Raw Message | 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
| 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) |