Обсуждение: For update

Поиск
Список
Период
Сортировка

For update

От
Ottó Havasvölgyi
Дата:
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

Re: For update

От
Alvaro Herrera
Дата:
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)


Re: For update

От
Michael Fuhr
Дата:
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


Re: For update

От
Ottó Havasvölgyi
Дата:
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 )

Re: For update

От
Alvaro Herrera
Дата:
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)


Re: For update

От
Ottó Havasvölgyi
Дата:
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)

Re: For update

От
Ottó Havasvölgyi
Дата:
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)