首页 > 解决方案 > postgreSQL:主键不是从 1 开始

问题描述

我使用查询在 DB 表中创建了一个名为 t_id 的主键 t_id SERIAL PRIMARY KEY。第一次,它从 1 开始很好。然后我删除了所有数据,从那时起,它从 2 开始,即使我将它设置为 1。

这是我在 seq - definition on pgAdmin4 上所做的截图:

在此处输入图像描述

任何人都知道问题出在哪里?

非常感谢!!

标签: postgresqlauto-incrementdatabase-sequence

解决方案


当前值为 1,因此将提供的下一个值为 2。这是预期的。

文档对这个主题很有帮助。

请记住,序列将始终为您提供以前未使用过的值。所以如果你插入 10 行,然后删除它们,下一个序列值仍然是 11(最后提供的值 + 1)

要重置序列,以便下次调用它时返回 1,您可以

SELECT setval('my_sequence_name', 1, false);  

推荐阅读