Re: choosing the right locking mode
От | Craig Ringer |
---|---|
Тема | Re: choosing the right locking mode |
Дата | |
Msg-id | 47F517D7.80709@postnewspapers.com.au обсуждение исходный текст |
Ответ на | choosing the right locking mode (rihad <rihad@mail.ru>) |
Ответы |
Re: choosing the right locking mode
|
Список | pgsql-general |
rihad wrote: > Given this type query: > > UPDATE bw_pool > SET user_id=? > WHERE bw_id= > (SELECT MIN(bw_id) FROM bw_pool WHERE user_id IS NULL) > RETURNING bw_id Can you use a SERIALIZABLE transaction and avoid the explicit lock? If I'm not mistaken, using the SERIALIZABLE isolation level should ensure that the following cannot occur: UPDATE begins UPDATE begins Subquery finds free row id 1 Subquery finds free row id 1 Update completes Update completes, overwriting changes from the other update. You'd have to be prepared to retry failed updates, but I doubt that's a big deal in this situation. See: http://www.postgresql.org/docs/8.2/interactive/transaction-iso.html -- Craig Ringer
В списке pgsql-general по дате отправления: