7

我需要在TRUNCATE桌子之后重置他的顺序,为此我这样做:

SELECT setval('mytable_id_seq', 1) 

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

如何重新设置序列值,新的第一个值将是1

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

2 回答 2

19

首先设置序列的最小值

alter sequence mytable_id_seq minvalue 0 start with 1;

现在要么重置它:

SELECT setval('mytable_id_seq', 0)

或者在截断时重置它:

truncate mytable restart identity;
于 2013-05-10T15:37:14.573 回答
5

要么使用第三个参数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

于 2013-05-10T15:36:48.550 回答