Обсуждение: For update
Hello,
What does this do exactly:
select * from <ViewName> where <condition> for update;
Will be locked all the tuples in all tables it retrieves?
In 8.0.5 this did not work for me.
Thanks,
Otto
Ottó Havasvölgyi wrote: > What does this do exactly: > > select * from <ViewName> where <condition> for update; > > Will be locked all the tuples in all tables it retrieves? Yes. > In 8.0.5 this did not work for me. How did it not work? Was any error message emitted? What is the view definition? -- Alvaro Herrera Developer, http://www.PostgreSQL.org "MySQL is a toy compared to PostgreSQL." (Randal L. Schwartz) (http://archives.postgresql.org/pgsql-general/2005-07/msg00517.php)
On Mon, Jan 16, 2006 at 02:05:15PM -0300, Alvaro Herrera wrote: > Ottó Havasvölgyi wrote: > > What does this do exactly: > > > > select * from <ViewName> where <condition> for update; > > > > Will be locked all the tuples in all tables it retrieves? > > Yes. > > > In 8.0.5 this did not work for me. > > How did it not work? Was any error message emitted? What is the view > definition? I wonder if "not work" means "didn't lock the rows" and the cause is simply not having a surrounding transaction. -- Michael Fuhr
Hello,
Huh, it was weeks ago, and I thought it was normal. It was a simple view with one or two inner joins and without aggragates. Perhaps somebody could try it. I got an error message, that said I cannot do that. I cannot remember the exact message unfortunately.
Best Regards,
Otto
2006/1/16, Alvaro Herrera <alvherre@alvh.no-ip.org>:
Ottó Havasvölgyi wrote:
> What does this do exactly:
>
> select * from <ViewName> where <condition> for update;
>
> Will be locked all the tuples in all tables it retrieves?
Yes.
> In 8.0.5 this did not work for me.
How did it not work? Was any error message emitted? What is the view
definition?
--
Alvaro Herrera Developer, http://www.PostgreSQL.org
"MySQL is a toy compared to PostgreSQL." (Randal L. Schwartz)
(http://archives.postgresql.org/pgsql-general/2005-07/msg00517.php )
Ottó Havasvölgyi wrote: > Hello, > > Huh, it was weeks ago, and I thought it was normal. It was a simple view > with one or two inner joins and without aggragates. Perhaps somebody could > try it. I got an error message, that said I cannot do that. I cannot > remember the exact message unfortunately. Sure, I can try it. Show us the definition and tell us what version are you using. -- Alvaro Herrera http://www.PlanetPostgreSQL.org "People get annoyed when you try to debug them." (Larry Wall)
Hello,
Sorry, I have just tried it, and works with 8.0.5. I had missed something then. :(
I like PostgreSQL. :)
Thanks,
Otto
2006/1/16, Alvaro Herrera <alvherre@alvh.no-ip.org>:
Ottó Havasvölgyi wrote:
> Hello,
>
> Huh, it was weeks ago, and I thought it was normal. It was a simple view
> with one or two inner joins and without aggragates. Perhaps somebody could
> try it. I got an error message, that said I cannot do that. I cannot
> remember the exact message unfortunately.
Sure, I can try it. Show us the definition and tell us what version are
you using.
--
Alvaro Herrera http://www.PlanetPostgreSQL.org
"People get annoyed when you try to debug them." (Larry Wall)
Hello,
Oh, I got it. Now in 8.0.6
When the view has UNION ALL, then PostgreSQL reports this: SELECT FOR UPDATE is not allowed in subqueries .
I see why:
select * from <view> for update;
After extraction:
select * from <subquery1> UNION ALL <subquery2> for update;
In this case it seems as if "for update" is in subquery2.
How can this be tricked?
Thanks,
Otto
2006/1/16, Ottó Havasvölgyi <havasvolgyi.otto@gmail.com>:
Hello,Sorry, I have just tried it, and works with 8.0.5. I had missed something then. :(I like PostgreSQL. :)Thanks,Otto
2006/1/16, Alvaro Herrera <alvherre@alvh.no-ip.org>:Ottó Havasvölgyi wrote:
> Hello,
>
> Huh, it was weeks ago, and I thought it was normal. It was a simple view
> with one or two inner joins and without aggragates. Perhaps somebody could
> try it. I got an error message, that said I cannot do that. I cannot
> remember the exact message unfortunately.
Sure, I can try it. Show us the definition and tell us what version are
you using.
--
Alvaro Herrera http://www.PlanetPostgreSQL.org
"People get annoyed when you try to debug them." (Larry Wall)