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.
regards, tom lane