После усечения таблицы последовательность не сбрасывается

Я использую SELECT lastval(), чтобы получить неправильный серийный идентификатор после усечения таблицы.

когда я усекаю таблицу, я использую SELECT lastval(), я получил неверный идентификатор /

Ответы

Ответ 1

Пытаться

TRUNCATE TABLE table_name 
RESTART IDENTITY;

Это будет

Автоматически перезапускайте последовательности, принадлежащие столбцам усеченной таблицы (таблиц).

Подробности здесь: TRUNCATE

Ответ 2

Ниже приведен стандартный способ сброса последовательности:

truncate table table_name restart identity;

но в некоторой версии и платформе, это синтаксическая ошибка,

в этом случае вы можете обрезать без повторной последовательности и изменить последовательность с помощью другого sql, попробуйте следующее:

truncate table table_name;
alter sequence seq_name start 1;

Ответ 3

Проверьте следующий

ALTER SEQUENCE sequence_name RESTART WITH 1;

Ответ 4

Если вы хотите сбросить последовательность, выполните следующие действия:

setval('sequence_name', 0)

Чтобы перечислить имена существующих последовательностей, введите a \ds в командной строке psql.

Ответ 5

Лучший способ сбросить последовательность, чтобы начать с номера 1, - это выполнить следующее после успешного ее усечения:

ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1

Так, например, для таблицы пользователей это будет:

ALTER SEQUENCE users_id_seq RESTART WITH 1