Re: Am I locking more than I need to?

Поиск
Список
Период
Сортировка
От Christopher Browne
Тема Re: Am I locking more than I need to?
Дата
Msg-id m31xlecwne.fsf@wolfe.cbbrowne.com
обсуждение исходный текст
Ответ на Am I locking more than I need to?  (Jeff Davis <jdavis-pgsql@empires.org>)
Ответы Re: Am I locking more than I need to?  (Jeff Davis <jdavis-pgsql@empires.org>)
Список pgsql-general
The world rejoiced as jdavis-pgsql@empires.org (Jeff Davis) wrote:
> The problem is, when you add the first item to "cart_items" you have to
> do an INSERT with a quantity of 1, but after that you need to do
> UPDATEs. That would seem to create a potential race condition, so in
> order for that to work it would seem you would need to do an ACCESS
> EXCLUSIVE lock on the table to make sure no other process was reading
> the table at the same time.

Various sorts of race conditions are possible in multi-user
multi-tasking systems; what _actual_ problem are you expecting to have
here?

What I would expect is that putting a unique index onto cart_items
based on (cart_id, prod_id) would prevent getting the confusing
situation of having multiple quantities of a single product in a
single cart.

I imagine that is the best thing to try to prevent, and that is
readily done without any "locks" by adding a UNIQUE constraint.  But
perhaps I am imagining a different error condition.

Can you describe the nature of the error condition that you are
thinking about?  That may help indicate what foreign key checks and/or
uniqueness constraints might be worth adding.
--
let name="cbbrowne" and tld="ntlug.org" in String.concat "@" [name;tld];;
http://cbbrowne.com/info/internet.html
This login session:  only $23.95!

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

Предыдущее
От: Jeff Davis
Дата:
Сообщение: Am I locking more than I need to?
Следующее
От: In. Martin Prášek
Дата:
Сообщение: Unix timestamp , unix timestamp with microseconds