Как сбросить последовательность в PostgreSQL

Kak Sbrosit Posledovatel Nost V Postgresql



Использование последовательности PostgreSQL — эффективный способ работы со значением автоинкремента, особенно для первичных ключей. Если начальное значение не определено, автоинкремент для INT начнется с 0. Однако вы можете указать, какое начальное значение использовать для последовательности, в столбце автоинкремента.

Более того, если у вас возникнет ситуация, требующая изменить следующее значение в последовательности, вы можете быстро сбросить последовательность и указать, с какого значения начинать следующую запись в таблице. Все подробности, которые вам следует знать о том, как сбросить последовательность в PostgreSQL, подробно описаны в этом посте. Взглянем!

Пример того, как сбросить последовательность в PostgreSQL

С помощью столбца INT вы можете создать последовательность с автоматическим приращением и использовать ее в качестве первичного ключа для своей таблицы. Таким образом, вам не нужно будет вводить его значения при выполнении запроса INSERT, поскольку целочисленные значения будут сгенерированы автоматически. После создания последовательности команда ALTER SEQUENCE позволяет перезапустить последовательность и указать новое начальное значение для новых записей.







В этом примере мы будем работать со следующей таблицей user_details. Наше внимание сосредоточено на столбце user_id, который представляет собой последовательность автоматического приращения, начинающуюся со 100.





Чтобы просмотреть различные последовательности в вашей базе данных, выполните следующую команду:





\дс

В нашем случае мы нацелены на последовательность «user_id».



Чтобы получить более подробную информацию о последовательности, запустите запрос «select», как показано ниже:

ВЫБРАТЬ * ИЗ имени_последовательности;

Мы видим, что последнее значение в существующей последовательности — 104. Мы сбрасываем это значение и определяем новое значение, которое будут иметь новые записи.

Чтобы сбросить последовательность PostgreSQL, используйте следующую команду:

ALTER SEQUENCE имя_последовательности RESTART With значение;

В нашем случае предположим, что мы хотим перезапустить последовательность и начать новые записи с номера 20. После выполнения следующей команды мы получаем вывод, как показано ниже, который подтверждает, что последовательность была изменена.

Если мы повторно запустим предыдущую команду, чтобы получить подробную информацию о нашей последовательности с помощью инструкции SELECT, мы увидим, что новое «last_value» для этого случая — это значение, которое мы указали с помощью команды ALTER.

Давайте добавим новую запись в нашу таблицу и посмотрим, что произойдет. На следующем изображении показан запрос INSERT и результаты, которые мы получаем после выполнения оператора SELECT. Обратите внимание, что для новой записи «user_id» установлен на 20. Все новые записи, которые мы создаем, будут иметь «user_id», сгенерированный на основе последнего значения, равного 20.

Если мы сделаем еще один ввод, его «user_id» будет 21, и последовательность будет продолжаться с использованием той же логики. Вот как вы сбрасываете последовательность в PostgreSQL. Обратите внимание, что команда «сброс» не влияет на существующие записи. Он определяет только новое начальное значение для записей, которые вы делаете после сброса последовательности.

Заключение

В PostgreSQL возможность автоматически генерировать целочисленные значения в столбце первичного ключа упрощает задачу. Если у вас есть существующая последовательность, вы можете использовать команду ALTER SEQUENCE.
Команда с опцией RESTART With, чтобы указать, какую последовательность вы хотите сбросить и какое значение установить в качестве последнего значения в последовательности. Таким образом, новые записи будут иметь целочисленное значение, сгенерированное на основе нового последнего значения. Обратитесь к представленному примеру, чтобы понять, как работает сброс последовательности PostgreSQL.