On Jan 13, 2013, at 2:36 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Steve Atkins <steve@blighty.com> writes:
>> Is the order in which the expressions in a VALUES() clause defined?
>> I'm doing this: INSERT INTO foo (a, b) VALUES (nextval('bar'), currval('bar'))
>
>> It works fine, but I'm wondering whether it's guaranteed to work or whether I'm relying on an artifact of the
implementation.
>
> I'd say it's an artifact. It probably does work reliably at the moment,
> but if we had a reason to change it we'd not feel much compunction about
> doing so. (The most obvious potential reason to change it is parallel
> evaluation of expressions, which is a long way off, so you probably
> don't have any near-term reason to worry. But ...)
>
> Consider sticking the nextval() into a WITH.
Thanks. WITH it is, then.
Cheers,
Steve