Re: Why do OLD and NEW have special internal names?

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Jan Wieck <JanWieck@Yahoo.com>
Cc: pgsql-hackers@postgresql.org
Date: 2009-11-20T21:39:17Z
Lists: pgsql-hackers
Jan Wieck <JanWieck@Yahoo.com> writes:
> On 11/20/2009 1:12 AM, Tom Lane wrote:
>> Jan Wieck <JanWieck@Yahoo.com> writes:
>>> But this brings up another point about the recent discussion of what 
>>> RENAME is good for. Removing RENAME may conflict with using OLD/NEW in 
>>> UPDATE ... RETURNING. No?
>> 
>> Um ... not sure why.  Specific example please?

> Inside a trigger proc, NEW is supposed to mean the new row for the table 
> that fired the trigger. However, inside an UPDATE RETURNING for example, 
> there is another set of NEW and OLD.

Uh, no there isn't ... and if there were I suppose it'd act much like
a query-local alias.

> Let's call the trigger call's NEW 
> NEW_a and the UPDATE RETURNING NEW NEW_b. How would the developer 
> specify something like

> INSERT ... RETURNING (NEW_a.value - NEW_b.value)?

They could use ALIAS to rename the trigger's NEW to something else.

			regards, tom lane