Re: are NEW and OLD rule attributes broken?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Forest Wilkinson <fspam(at)home(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: are NEW and OLD rule attributes broken?
Date: 2001-05-18 19:20:47
Message-ID: 22865.990213647@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Forest Wilkinson <fspam(at)home(dot)com> writes:
> What's going on here? My rule inserted a new row into bar, but the fooid
> it used was not the new value inserted into foo. It looks like my rule is
> inserting "nextval('foo_fooid_seq')" into the bar table, rather than
> inserting the new primary key from the foo table. Is this the intended
> behavior?

NEW and OLD are effectively macros, not variables. So yes, you get
extra evaluations of nextval() this way. I think there are cases where
that is actually what you want (not in this case obviously :-(). It
would be fairly difficult to change, anyway.

> How can I get the result I want?

If you want to copy the data actually inserted, a trigger is a much
better bet than a rule.

regards, tom lane

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Ловпаче Айдамир 2001-05-18 23:30:04 Why indexes are not used when scanning from functions?
Previous Message Forest Wilkinson 2001-05-18 18:36:17 are NEW and OLD rule attributes broken?