我需要在TRUNCATE
桌子之后重置他的顺序,为此我这样做:
SELECT setval('mytable_id_seq', 1)
之后,当在表中插入行时,序列2
从不开始1
如何重新设置序列值,新的第一个值将是1
?
SELECT setval('mytable_id_seq', 0) // gives error that value is out of range
我需要在TRUNCATE
桌子之后重置他的顺序,为此我这样做:
SELECT setval('mytable_id_seq', 1)
之后,当在表中插入行时,序列2
从不开始1
如何重新设置序列值,新的第一个值将是1
?
SELECT setval('mytable_id_seq', 0) // gives error that value is out of range
首先设置序列的最小值
alter sequence mytable_id_seq minvalue 0 start with 1;
现在要么重置它:
SELECT setval('mytable_id_seq', 0)
或者在截断时重置它:
truncate mytable restart identity;
要么使用第三个参数setval()
:
setval(yourseq, 1, false)
http://www.postgresql.org/docs/current/static/functions-sequence.html
或者改变顺序:
alter sequence yourseq restart
http://www.postgresql.org/docs/current/static/sql-altersequence.html