On 4/7/15 2:00 PM, Alvaro Herrera wrote:
> Tom Lane wrote:
>
>> I spent a fair amount of time cleaning this patch up to get it into
>> committable shape, but as I was working on the documentation I started
>> to lose enthusiasm for it, because I was having a hard time coming up
>> with compelling examples. The originally proposed motivation was
>>
>>>> It solves the problem of doing UPDATE from a record variable of the same
>>>> type as the table e.g. update foo set (*) = (select foorec.*) where ...;
>>
>> but it feels to me that this is not actually a very good solution to that
>> problem --- even granting that the problem needs to be solved, a claim
>> that still requires some justification IMO.
>
> How about an UPDATE ran inside a plpgsql function, which is using a row
> variable of the table type? You could assign values to individual
> columns of q row variable, and run the multicolumn UPDATE last.
Along similar lines, I've often wanted something akin to *, but allowing
finer control over what you got. Generally when I want this it's because
I really do want everything (as in, don't want to re-code a bunch of
stuff if a column is added), but perhaps not the surrogate key field. Or
I want everything, but rename some field to something else.
Basically, another way to do what Alvaro is suggesting (though, the
ability to rename something is new...)
If we had that ability I think UPDATE * would become a lot more useful.
--
Jim Nasby, Data Architect, Blue Treble Consulting
Data in Trouble? Get it in Treble! http://BlueTreble.com