将序列值重置为1

时间:2013-05-10 15:28:41

标签: postgresql

我需要在TRUNCATE表之后重置他的序列,为此我做了:

SELECT setval('mytable_id_seq', 1) 

之后,当在表格中插入行时,序列从2开始而不是1

如何重新插入序列值,新的第一个值将是1

 SELECT setval('mytable_id_seq', 0) // gives error that value is out of range

2 个答案:

答案 0 :(得分:15)

首先设置序列的最小值

alter sequence mytable_id_seq minvalue 0 start with 1;

现在要么重置它:

SELECT setval('mytable_id_seq', 0)

或者在截断时重置它:

truncate mytable restart identity;

答案 1 :(得分:4)

使用setval()的第三个参数:

setval(yourseq, 1, false)

http://www.postgresql.org/docs/9.2/static/functions-sequence.html

或改变顺序:

alter sequence yourseq restart

http://www.postgresql.org/docs/9.2/static/sql-altersequence.html