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

Предыдущее
От: Richard Huxton
Дата:
Сообщение: Re: concurrent updates problem
Следующее
От: Tom Lane
Дата:
Сообщение: Re: concurrent updates problem