我正在使用postgres 9.5。作为应用程序初始化的一部分,我在应用程序启动时使用随机ID在数据库中进行一些插像insert into student values(1,'abc')
,insert into student values(10,'xyz')
这样的东西。然后我开发了一些以编程方式插入新行的API。我们有什么方法可以告诉postgres跳过已经采取过的ID?
它试图占用已经使用过的ID。我注意到它没有更新序列的初始插入
以下是我创建表的方法
CREATE TABLE student(
id SERIAL PRIMARY KEY,
name VARCHAR(64) NOT NULL UNIQUE
);
答案 0 :(得分:2)
如果您的数据已分发,听起来您可能会更好地使用UUID作为主键值。
答案 1 :(得分:1)
您可以将填充id
列的序列推进到最高值:
insert into student (id, name)
values
(1, 'abc'),
(2, 'xyz');
select setval(pg_get_serial_sequence('student', 'id'), (select max(id) from student));