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