Re: unexpected update behavior with temp tables

From: Richard Huxton <dev(at)archonet(dot)com>
To: Timothy Perrigo <tperrigo(at)wernervas(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: unexpected update behavior with temp tables
Date: 2004-07-08 13:57:57
Message-ID: 40ED52E5.3050201@archonet.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Timothy Perrigo wrote:

> OPT=# select id as not_id, b into temp temp_foo from foo where b = 'Tim';
> SELECT
> OPT=# select * from temp_foo;
> not_id | b
> --------+-----
> 1 | Tim
> (1 row)
>
> OPT=# update foo set b = 'Timothy' where id in (select id from temp_foo);
> UPDATE 4
> OPT=# select * from foo;
> id | b
> ----+---------
> 1 | Timothy
> 2 | Timothy
> 3 | Timothy
> 4 | Timothy
> (4 rows)

I think I can see what's happening, but don't know enough internals to
say why.

The "id" in the subselect must be binding to the outer query. I could
see how that might be desirable in some circumstances, but could easily
cause trouble in many cases.

--
Richard Huxton
Archonet Ltd

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Timothy Perrigo 2004-07-08 14:10:50 Re: unexpected update behavior with temp tables
Previous Message Stephan Szabo 2004-07-08 13:35:25 Re: Column name 'user' not allowed?