Re: concurrent updates problem
| От | Tom Lane |
|---|---|
| Тема | Re: concurrent updates problem |
| Дата | |
| Msg-id | 19668.985018321@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | Re: concurrent updates problem ("Richard Huxton" <dev@archonet.com>) |
| Ответы |
RE: concurrent updates problem
|
| Список | pgsql-general |
>> I have on a web application
>> update threads set views = views + 1 where forum_id = 1 and thread_id = 1
It should work to do
begin;
select * from threads where forum_id = 1 and thread_id = 1 FOR UPDATE;
update threads set views = views + 1 where forum_id = 1 and thread_id = 1;
end;
Note the FOR UPDATE to lock the row and the transaction wrapping to
define the scope of the lock. Without this I'd expect you to lose
some counter increments as a result of two processes doing the UPDATE
at about the same time (both will read the old value of "views" and
increment it by one).
regards, tom lane
В списке pgsql-general по дате отправления: