Re: summing tables - Mailing list pgsql-sql

From Tom Lane
Subject Re: summing tables
Date
Msg-id 22671.1058282096@sss.pgh.pa.us
Whole thread Raw
In response to Re: summing tables  (Erik Thiele <erik@thiele-hydraulik.de>)
List pgsql-sql
Erik Thiele <erik@thiele-hydraulik.de> writes:
> "Viorel Dragomir" <bigchief@vio.ro> wrote:
>> update table_name
>> set c = a + b + (select c from table_name as x where x.seq = seq-1)
>> where c is null;

> hmmm. the query is run row by row, isn't it?
> but it will have different results depending on the order of those rows.

No, it won't, because the SELECTs will not see the changes from the
not-yet-completed UPDATE.  The above command is almost right; it needs
to be

update table_name
set c = a + b + (select c from table_name as x where seq = table_name.seq-1)
where c is null;

because inside the sub-SELECT, unadorned "seq" will refer to the SELECT's
table.

You didn't say exactly what you wanted to do with null inputs, so that
issue may need more thought.
        regards, tom lane


pgsql-sql by date:

Previous
From: Jean-Luc Lachance
Date:
Subject: Re: summing tables
Next
From: Dmitry Tkach
Date:
Subject: Re: Non-Blocking Locks (i.e. Oracle NOWAIT)