Re: [GENERAL] Postgres concurrency : urgent

Поиск
Список
Период
Сортировка
От Marcin Inkielman
Тема Re: [GENERAL] Postgres concurrency : urgent
Дата
Msg-id Pine.LNX.4.04.9911121255350.26022-100000@mi.marnnet
обсуждение исходный текст
Ответ на Re: [GENERAL] Postgres concurrency : urgent  (Chairudin Sentosa Harjo <chai@prima.net.id>)
Список pgsql-general
On Fri, 12 Nov 1999, Chairudin Sentosa Harjo wrote:

> How do I lock a sequence?
> I must be able to rollback to previous sequence curr.value, if the
> transaction fails to work.
> I have been looking this for ages, it seems I haven't found the answer
> yet.
>

I use it like this:

BEGIN;
LOCK any_seq IN ACCESS EXCLUSIVE MODE;

SELECT any_seq.last_value+1...
INSERT into ... values(any_seq.last_value+1,....)
UPDATE ... set ...=any_seq.last_value+1...
...
SELECT nextval(any_seq);
END;

now I am sure that all SELECT, INSERT , ...
use exactly the same value of any_seq.last_value+1 and when any operation
fails my any_seq remains unchanged. I am also sure that only one
transaction that modify any_seq is running.


***********************************

    Marcin Inkielman

************************************
               .~.
               /V\
              // \\
             /(   )\
              ^`~'^

         powered by Linux
               ----

    sibi omino similis?
************************************


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

Предыдущее
От: Bob Kline
Дата:
Сообщение: Re: [GENERAL] troubles with datestyle
Следующее
От: Bruce Elrick
Дата:
Сообщение: Composite Keys