Re: Why do OLD and NEW have special internal names? - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Why do OLD and NEW have special internal names?
Date
Msg-id 9032.1258753157@sss.pgh.pa.us
Whole thread Raw
In response to Re: Why do OLD and NEW have special internal names?  (Jan Wieck <JanWieck@Yahoo.com>)
List 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


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Prettification versus dump safety
Next
From: Robert Haas
Date:
Subject: Re: [COMMITTERS] pgsql: Add a WHEN clause to CREATE TRIGGER, allowing a boolean