Сброс последовательности postgres для получения неиспользуемых идентификаторов первичного ключа

Я использую Postgres 9,5. В рамках инициализации приложения я делаю несколько вставок в базу данных при запуске приложения со случайными идентификаторами. Что-то вроде insert into student values(1,'abc'), insert into student values(10,'xyz'), Затем у меня есть несколько API для отдыха, которые программно вставляют новые строки. Есть ли способ, которым мы можем сказать Postgres, чтобы пропустить уже принятые идентификаторы?

Он пытался использовать уже использованные идентификаторы. Я заметил, что не имеет обновленной последовательности с учетом начальных вставок

Вот как я создаю таблицу

CREATE TABLE student(
    id                  SERIAL PRIMARY KEY,
    name                VARCHAR(64) NOT NULL UNIQUE     
);

2 ответа

Решение

Вы можете продвинуть последовательность, которая заполняет id столбец с наибольшим значением:

insert into student (id, name) 
values 
  (1, 'abc'),
  (2, 'xyz');

select setval(pg_get_serial_sequence('student', 'id'), (select max(id) from student));

Похоже, вам лучше использовать UUID в качестве значений первичного ключа, если ваши данные распределены.

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