postgreSQL - 为序列设置隐式起始值

时间:2014-06-29 11:06:52

标签: postgresql

我正在使用postgresql数据库,我有一个id_table列的表并且类型为:serial,它会自动为列创建一个新序列,但它始终以设置开始(最小值= 1,起始值= 1 - >所以下一个值是2),所以..在每个表中我的第一行有两个而不是一个,是不是很奇怪?我认为每个人都习惯于从值1而不是2开始,我可以手动更改起始值,但我想问你是否知道如何将每个新序列的隐含起始值更改为1.或者至少为什么他们这样做了。感谢。

1 个答案:

答案 0 :(得分:1)

当我创建这样的表时。 。

create table your_table (
  id serial primary key
);

PostgreSQL创建了这个序列。

CREATE SEQUENCE your_table_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

如果我然后插入一行,并查看该值。 。

insert into your_table values (default);
select * from your_table;
id
--
1

这是记录在案的行为,这是我所期待的。

你可以在PostgreSQL 8.4 +中使用truncate a table and restart the sequence

truncate your_table restart identity;
insert into your_table values (default);
select * from your_table;
id
--
1