Re: concurrent updates problem

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: concurrent updates problem
Дата
Msg-id 3AB68EEF.24CBB445@archonet.com
обсуждение исходный текст
Ответ на concurrent updates problem  (mwaples@waples.net)
Список pgsql-general
Tom Lane wrote:
>
> 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).

Tom - Surely the update runs in its own transaction and will only ever
update a previously consistent value? If there is another transaction
concurrently updating it should block until the results are available?

I can see what you're getting at but for the example query it shouldn't
be necessary if I understand this right.

- Richard Huxton

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: tuple help
Следующее
От: Gilles DAROLD
Дата:
Сообщение: Re: postgreSQL db temporary on Microsoft IIS 4.0