RE: concurrent updates problem

Поиск
Список
Период
Сортировка
От Hiroshi Inoue
Тема RE: concurrent updates problem
Дата
Msg-id EKEJJICOHDIEMGPNIFIJGEFNDOAA.Inoue@tpf.co.jp
обсуждение исходный текст
Ответ на Re: concurrent updates problem  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
> -----Original Message-----
> From: Tom Lane
>
> >> 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.

ISTM this is not the case that 'FOR UPDATE' is required.

> 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).
>

If this is true, it's really a serious bug and must be fixed.

regards,
Hiroshi Inoue


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Strange Type Mismatch on Insert
Следующее
От: will trillich
Дата:
Сообщение: pg_description usage pointers?