Причины автоматического уменьшения "последнего значения" ПОСЛЕДОВАТЕЛЬНОСТИ в 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()?

Другие вопросы по тегам