Ответ 1
Пытаться
TRUNCATE TABLE table_name
RESTART IDENTITY;
Это будет
Автоматически перезапускайте последовательности, принадлежащие столбцам усеченной таблицы (таблиц).
Подробности здесь: TRUNCATE
Я использую SELECT lastval(), чтобы получить неправильный серийный идентификатор после усечения таблицы.
когда я усекаю таблицу, я использую SELECT lastval(), я получил неверный идентификатор /
Пытаться
TRUNCATE TABLE table_name
RESTART IDENTITY;
Это будет
Автоматически перезапускайте последовательности, принадлежащие столбцам усеченной таблицы (таблиц).
Подробности здесь: TRUNCATE
Ниже приведен стандартный способ сброса последовательности:
truncate table table_name restart identity;
но в некоторой версии и платформе, это синтаксическая ошибка,
в этом случае вы можете обрезать без повторной последовательности и изменить последовательность с помощью другого sql, попробуйте следующее:
truncate table table_name;
alter sequence seq_name start 1;
Проверьте следующий
ALTER SEQUENCE sequence_name RESTART WITH 1;
Если вы хотите сбросить последовательность, выполните следующие действия:
setval('sequence_name', 0)
Чтобы перечислить имена существующих последовательностей, введите a \ds
в командной строке psql.
Лучший способ сбросить последовательность, чтобы начать с номера 1, - это выполнить следующее после успешного ее усечения:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
Так, например, для таблицы пользователей это будет:
ALTER SEQUENCE users_id_seq RESTART WITH 1