Re: easy task: concurrent select-updates

Поиск
Список
Период
Сортировка
От Nickolay
Тема Re: easy task: concurrent select-updates
Дата
Msg-id 4AA09A87.1050201@zhukcity.ru
обсуждение исходный текст
Ответ на Re: easy task: concurrent select-updates  (Kevin McConnell <kevin.mcconnell@gmail.com>)
Ответы Re: easy task: concurrent select-updates  (Andy Colson <andy@squeakycode.net>)
Список pgsql-general
Kevin McConnell wrote:
>> CREATE OR REPLACE FUNCTION public.getmsg() RETURNS integer LANGUAGE plpgsql
>> AS $function$
>> declare
>>       rec record;
>> begin
>>       for rec in select id from msg where busy =alse order by id loop
>>               update msg set busy =rue where id = rec.id and busy = false;
>>               if found then
>>                       return rec.id;
>>               end if;
>>       end loop;
>>       return -1;
>> end;
>> $function$
>>
>
> I think you could also do something roughly similar in a statement by
> using a RETURNING clause on the update, such as:
>
>   update msg set busy =rue where id = (select min(id) from msg where
> busy =alse) returning *;
>
> Cheers,
> Kevin
>

Thank you guys! But what's min(id) for? Is it neccessary? Is there any
chance I can replace min(id) to LIMIT 1?

Best regards, Nick.

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

Предыдущее
От: Juan Backson
Дата:
Сообщение: N + 1 replication
Следующее
От: 纪晓曦
Дата:
Сообщение: Moving avg using SQL