Thread: question about visibilty while updating multiple rows .

question about visibilty while updating multiple rows .

From
Rajesh Kumar Mallah
Date:

Hi,

If an update statement is affecting multiple rows of a table X ,
Does a subselect (selecting from X only)  inside EXISTS part of outer query 
able to see the changes when rows are being updated one by one by outer query?


for example consider following set of data rows:

+------------+-----------------------+------+----------+----------------------------------+
| profile_id |        co_name        | size | deletion |               md5                |
+------------+-----------------------+------+----------+----------------------------------+
|     212161 | ATITH FIBRE PVT. LTD. | FL   | t        | edc462794427724b7d132e3b1387d69f |
|     212159 | ATITH FIBRE PVT. LTD. | 1HS  | f        | edc462794427724b7d132e3b1387d69f |
|     216225 | ATITH FIBRE PVT. LTD. | 1HS  | f        | edc462794427724b7d132e3b1387d69f |
|     216226 | ATITH FIBRE PVT. LTD. | 1HS  | f        | edc462794427724b7d132e3b1387d69f |
+------------+-----------------------+------+----------+----------------------------------+

begin work;

UPDATE eyp_profiles_table SET
       deletion=true 
WHERE 
co_name='ATITH FIBRE PVT. LTD.' AND        deletion is false and EXISTS (select * from eyp_profiles_table a where
a.md5=eyp_profiles_table.md5and      a.deletion is false and a.profile_id <> eyp_profiles_table.profile_id) ;
 


my original problem is to update in such a way that i get below finally (observer the deletion column)
+------------+-----------------------+------+----------+----------------------------------+
| profile_id |        co_name        | size | deletion |               md5                |
+------------+-----------------------+------+----------+----------------------------------+
|     212161 | ATITH FIBRE PVT. LTD. | FL   | t        | edc462794427724b7d132e3b1387d69f |
|     212159 | ATITH FIBRE PVT. LTD. | 1HS  | t        | edc462794427724b7d132e3b1387d69f |
|     216225 | ATITH FIBRE PVT. LTD. | 1HS  | t        | edc462794427724b7d132e3b1387d69f |
|     216226 | ATITH FIBRE PVT. LTD. | 1HS  | f        | edc462794427724b7d132e3b1387d69f |
+------------+-----------------------+------+----------+----------------------------------+
so that only one entry per md5 record exists.



Regds
mallah.






-- 
Rajesh Kumar Mallah,
Project Manager (Development)
Infocom Network Limited, New Delhi
phone: +91(11)6152172 (221) (L) ,9811255597 (M)

Visit http://www.trade-india.com ,
India's Leading B2B eMarketplace.



Re: question about visibilty while updating multiple rows .

From
Tom Lane
Date:
> If an update statement is affecting multiple rows of a table X ,
> Does a subselect (selecting from X only)  inside EXISTS part of outer query 
> able to see the changes when rows are being updated one by one by outer query?

No, because it's part of the same query.

I believe though that a user-defined function called from the update
query would see the changes made so far.  So possibly you can fix your
problem by pushing the EXISTS down into a SQL or plpgsql function.
        regards, tom lane



Re: question about visibilty while updating multiple rows .

From
Rajesh Kumar Mallah
Date:
On Wednesday 09 Apr 2003 8:42 pm, Tom Lane wrote:
> > If an update statement is affecting multiple rows of a table X ,
> > Does a subselect (selecting from X only)  inside EXISTS part of outer
> > query able to see the changes when rows are being updated one by one by
> > outer query?
>
> No, because it's part of the same query.
>
> I believe though that a user-defined function called from the update
> query would see the changes made so far.  So possibly you can fix your
> problem by pushing the EXISTS down into a SQL or plpgsql function.

Thanks for the explanation and suggestion Tom,
I did it however by using intermediate tables and distinct on().

Regds
Mallah.


>
>             regards, tom lane
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly

-- 
Rajesh Kumar Mallah,
Project Manager (Development)
Infocom Network Limited, New Delhi
phone: +91(11)6152172 (221) (L) ,9811255597 (M)

Visit http://www.trade-india.com ,
India's Leading B2B eMarketplace.