我需要在TRUNCATE
表之后重置他的序列,为此我做了:
SELECT setval('mytable_id_seq', 1)
之后,当在表格中插入行时,序列从2
开始而不是1
如何重新插入序列值,新的第一个值将是1
?
SELECT setval('mytable_id_seq', 0) // gives error that value is out of range
答案 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