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

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

--
   Richard Huxton
   Archonet Ltd

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: doc typo sql-reindex.html psql vs. postgres
Next
From: Tom Lane
Date:
Subject: Re: NULL != text ?