Re: Application locking

Поиск
Список
Период
Сортировка
От Vincent Veyron
Тема Re: Application locking
Дата
Msg-id 1372510826.3502.31.camel@asus-1001PX.home
обсуждение исходный текст
Ответ на Re: Application locking  (Kenneth Tilton <ktilton@mcna.net>)
Список pgsql-general
Le vendredi 28 juin 2013 à 13:18 -0400, Kenneth Tilton a écrit :

>
> On Fri, Jun 28, 2013 at 1:16 PM, Kenneth Tilton <ktilton@mcna.net>
> wrote:
>         We want to make sure no two examiners are working on the same
>         case at the same time, where the cases are found by searching
>         on certain criteria with limit 1 to get the "next case".
>
>
>         A naive approach would be (in a stored procedure):
>
>
>                 next_case_id := null;
>
>
>         select id into next_case_id
>         from cases c
>         where unfinished = true
>         and not exists (select 1 from table_lock
>         where table_name = 'case' and row_id = c.id)
>         limit 1;
>         if found then
>         insert into table_lock (table_name, row_id) values ('case',
>         next_case_id);
>         end if;
>
>         return next_case_id;
>
>
>         I suspect it would be possible for two users to get the same
>         case locked that way. Yes?
>
>
>         If so, would adding "for update" to the initial select prevent
>         a second caller to block on their select until the first
>         caller had written out the lock, effectively preventing two
>         callers from locking the same case?
>
>
> Change "prevent" to "cause":
>
>
> If so, would adding "for update" to the initial select cause a second
> caller to block on their select until the first caller had written out
> the lock, effectively preventing two callers from locking the same
> case?
>
>

You could put a unique constraint on table_lock, or make (table_name,
row_id) the primary key; this would prevent the second user from locking
the same case and you can treat the exception in your code.



--
Salutations, Vincent Veyron
http://vincentveyron.com
Logiciels de gestion des sinistres assurance et des contentieux pour le service juridique



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

Предыдущее
От: Alban Hertroys
Дата:
Сообщение: Re: Postgres case insensitive searches
Следующее
От: bhanu udaya
Дата:
Сообщение: Re: [pgadmin-support] Postgres case insensitive searches