Когда nextval оценивается в транзакциях записи? - PullRequest
0 голосов
/ 28 февраля 2019

Если у меня есть последовательность 'foo' в postgres, и я делаю что-то вроде следующего:

begin;
insert into ... values (nextval('foo'));
commit;

Оценивается ли nextval при коммите?Другими словами, если я только сделаю такие записи в этот столбец, будет ли он отображаться как монотонно увеличивающийся, или есть ли гонка там?

Документы ясно дают понять, что последовательности не транзакционные, но неони могут быть использованы для заказа записи таким образом.

Если да, что по этому поводу?

begin;
select nextval('foo'); -- save the value
insert into ... values (<saved value>);
commit;

1 Ответ

0 голосов
/ 28 февраля 2019

nextval выполняется немедленно.Каждый вызов nextval гарантированно возвращает уникальный номер, даже если несколько операторов вызывают его по одной и той же последовательности в одно и то же время.

Ничто не может пойти не так с последовательностями!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...