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 по дате отправления: