Сброс последовательности 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 в качестве значений первичного ключа, если ваши данные распределены.