В таблице, созданной таким образом, значения идентификатора SERIAL генерируются автоматически базой данных. Ошибка значениями id 37, 81, 82, 83, 84 и 85 может произойти, если записи были удалены из таблицы. Идентификаторы, созданные для удаленных записей, не будут переиспользованы и неприрывной последовательности не будет гарантировано.
Чтобы избежать такой ситуации, можно использовать команду VACUUM для обновления последовательности SERIAL. Команда VACUUM проанализирует таблицу и обновит автоматически генерируемую последовательность для идентификатора. Например, команда VACUUM FULL users; выполнит полный анализ таблицы users и обновит последовательность для идентификатора.
Кроме того, если вы хотите гарантировать отсутствие пропусков значений в идентификаторе, вы можете использовать другой тип данных для идентификатора, такой как UUID, который генерирует уникальные идентификаторы вне зависимости от последовательности. Например, вы можете создать таблицу с идентификатором UUID следующим образом:
CREATE TABLE users(
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
name VARCHAR(255)
);
В этом случае, каждая новая запись будет иметь уникальный идентификатор UUID, и вы можете быть уверены в отсутствии пропусков значений.