Причины автоматического уменьшения "последнего значения" ПОСЛЕДОВАТЕЛЬНОСТИ в postgresql?
Я использую "последовательность" с начальным значением = 1 и приращением = 1 и предположим, что я вставляю 10 элементов в таблицу, тогда "last_value" переходит к 10. Теперь, если я удаляю 10-й элемент, тогда "last_value" по-прежнему указывает на 10. Теперь мой вопрос в том, есть ли вероятность того, что значение last_value может уменьшиться до 9, убив postgres или взяв дамп, а затем снова восстановив базу данных (или любой другой случай).
В моем случае это произошло (я не знаю как). Пожалуйста, укажите возможные причины этого.
2 ответа
Есть только 2 случая, когда последовательность "уменьшается":
- Последовательность достигла своей
MAXVALUE
и сбрасывается наMINVALUE
, Это можно контролировать с[ NO ] CYCLE
вCREATE SEQUENCE
- Последовательность явно сбрасывается с
setval()
Нет других способов получить одно и то же значение из последовательности 2 раза.
Вы можете установить значение последовательности.
SELECT setval('public.sequence_name', 9, true);
Однако, если вам нужно, чтобы значения были смежными, я не уверен, что последовательность является наиболее подходящим способом для этого. Возможно используя rank()
?