Re: [SQL] Are PL/pgSQL calls atomic?
От | Vadim Mikheev |
---|---|
Тема | Re: [SQL] Are PL/pgSQL calls atomic? |
Дата | |
Msg-id | 3755D968.D3955172@krs.ru обсуждение исходный текст |
Ответ на | Are PL/pgSQL calls atomic? ("Mark Wright" <mwright@pro-ns.net>) |
Список | pgsql-sql |
Mark Wright wrote: > > If I call a PL/pgSQL function, and another client makes the same call, does > the second client have to wait for the first to complete execution before it > begins? If not, is there some sort of mechanism I can use to prevent more > than one call to a function from happening at the same time (something like > a mutex in Win32). > > I need to select a row and then mark it as unavailable for other clients to > use. The table looks like: > create table xyz (id serial, status char default 'N', ...); > > My function finds a row by doing: > select id into my_id_variable from xyz where id > = (select min(id) from xyz where status = 'N'); 6.5 allows you SELECT FOR UPDATE... > > and then marks that row as unavailable by setting status: > update xyz set status = 'Y' where id = my_id_variable; > > Obviously, if a second client calls this function before the UPDATE takes > place, it will pick up the same row as the first client, causing rending of > hair and gnashing of teeth. Vadim
В списке pgsql-sql по дате отправления: