有没有一种方法可以将已填充表上的PostgreSQL表的主键重新设置为从1开始?
现在,它正在生成从1000000起的数字。我希望所有这些都重置并开始为1,以保持所有现有数据不变。
Answers:
SELECT setval('table_id_seq', 1)
,则在插入新记录时,id的值为2,而不是1。PawełGościcki的解决方案起作用。(PostgreSQL 9.3)
重置序列以从1开始的最佳方法是执行以下操作:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
因此,例如对于users
表,它将是:
ALTER SEQUENCE users_id_seq RESTART WITH 1
WITH 1
参数是redundand,它可以中省略
seq
,可以pk
等)。但是在psql上通过可以很容易\d my_table_name
。或通过SQL检查,SELECT * FROM pg_indexes WHERE tablename like '%my_table_name%'
SELECT setval('table_id_seq', 10000)