Search Postgresql Archives

Re: UPDATE using query; per-row function calling problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



That's interpretation of subselect is ok, when it contains only stable
functions.

Maybe add a warning when subselect contains volatile function.

2011/9/2, Rory Campbell-Lange <rory@xxxxxxxxxxxxxxxxxx>:
> On 02/09/11, Tom Lane (tgl@xxxxxxxxxxxxx) wrote:
>> Rory Campbell-Lange <rory@xxxxxxxxxxxxxxxxxx> writes:
>> > I'm doing an UPDATE something like this:
>> >     UPDATE
>> >         slots
>> >     SET
>> >         a = 'a'
>> >         ,b = (SELECT uuid_generate_v1())
>> >     WHERE
>> >         c = TRUE;
>>
>> > Each updated row in slots is getting the same value for b.
>
>> That's Postgres' interpretation of an uncorrelated sub-SELECT: there's
>> no reason to do it more than once, so it doesn't.
>>
>> > Is there a way of getting a per-row value from uuid_generate_v1()
>> > without doing a PL loop?
>>
>> Drop the word "SELECT".  Why did you put that in in the first place?
>
> Hi Tom
>
> Good question to which I don't know the answer. Thanks very much for the
> advice.
>
> I was able to force a per-row call to uuid_generate_v1 by using this
> pattern
>
>     UPDATE
>         r_slots
>     SET b = (SELECT
>                 y.x
>              FROM
>                 (select -1 as n, uuid_generate_v1() as x )y
>              WHERE
>                 y.n != r_slots.id)
>     ...
>
> But
>     b = uuid_generate_v1()
> is a lot simpler!
>
> In my "-1" example, am I right in assuming that I created a correlated
> subquery rather than an correlated one? I'm confused about the
> difference.
>
> Many thanks
> Rory
>
>
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>


-- 
------------
pasman

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux