postgreSQL:主键不是从1开始

时间:2019-05-29 12:27:21

标签: postgresql auto-increment database-sequence

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

这是我对seq所做的屏幕截图-pgAdmin4上的定义:

enter image description here

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

非常感谢!

2 个答案:

答案 0 :(得分:0)

当前值为1,因此将要提供的下一个值为2。

doc在此主题上很有帮助。

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

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

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

答案 1 :(得分:0)

您的t_id是主键自动递增的串行类型。这些已排序,您可以使用序列操作功能设置下一个序列的值。

Postgres sequence manipulation functions documentation