Re: Query inside transaction

Поиск
Список
Период
Сортировка
От Michal Táborský
Тема Re: Query inside transaction
Дата
Msg-id 40DC00BA.8020501@taborsky.cz
обсуждение исходный текст
Список pgsql-general
NMB Webmaster wrote:

> But if someone else runs the same transaction in the same time what
 > value does "currval('sequence')" return? That one of the first
 > transaction or that one of the other transaction? Moreover, field
 > id is a unique primary key, it does not accept duplicates.

That's the beauty of sequences. They are transaction-safe. Co
"currval('sequence')" will always return the same value of the previous
nextval call within that transaction, no matter how many other
transactions picked the numbers in between.

To demonstrate:

Transaction 1                              Transaction 2
BEGIN;                    --
nextval('seq') = 1            BEGIN;
do something..                nextval('seq') = 2
do something else...            COMMIT;
currval('seq') = 1
COMMIT;

--
Michal Taborsky
http://www.taborsky.cz


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

Предыдущее
От: Michal Táborský
Дата:
Сообщение: Re:
Следующее
От: Ago
Дата:
Сообщение: Re: Query inside transaction