Re: select ... for update

Поиск
Список
Период
Сортировка
От Karel Zak
Тема Re: select ... for update
Дата
Msg-id Pine.LNX.3.96.1001213090602.2387B-100000@ara.zf.jcu.cz
обсуждение исходный текст
Ответ на select ... for update  (Jie Liang <jliang@ipinc.com>)
Список pgsql-sql
> > Hi,
> 
> How can I use select ... for update to update limit to update what I
> select??
First thing - the SELECT FOR UPDATE is not merge of SELECT and UPDATE 
but transaction option. The PostgreSQL use row-locking for UPDATEed rows.
Standard SELECT ignore this lock, but SELECT FOR UPDATE wait until
*other* transaction with UPDATE will commited. 

> somewhat like:
> select url,id from mytable for update order by priority,id limit 5;                            ^^^^^^^^^^^^^^^^^^^see
theSELECT's syntax, ORDER BY must be before FOR UPDATE.
 

> I want update the id in above return like:
> update mytable set allocatedto='whatever' where id in above return set.
Can't you in UPDATE's WHERE define some 'id' as in above SELECT?  
An example (via subselect):
UPDATE mytable SET allocatedto='whatever' WHERE id IN (    SELECT id FROM mytable ORDER BY priority,id LIMIT 5);
But it not will too much fast... better is define relevant 'id'
inside UPDATE's WHERE without sub-select, but if you need define it via
ORDER+LIMIT it's impossible.
            Karel




В списке pgsql-sql по дате отправления:

Предыдущее
От: "Nikhil G. Daddikar"
Дата:
Сообщение: Decimal vs.Numeric vs. Int & type for OID
Следующее
От: bboett@erm1.u-strasbg.fr (Bruno Boettcher)
Дата:
Сообщение: Postgres closing the connection too fast with php4+apache