我创建下表
CREATE TABLE dogs (
id serial,
name VARCHAR(15),
age integer;
我的桌子看起来像这样
Table "public.birds"
Column | Type | Modifiers
---------+-----------------------+-------------------------------------
id | integer | not null default nextval('birds_id_seq'::regclass)
name | character varying(25) |
age | integer |
我插入两行
INSERT INTO dogs (name, age)
VALUES ('puffy', 13),
('fluffy', 15);
表格现在看起来像这样
id | name | age
----+--------+-----
1 | puffy | 13
2 | fluffy | 15
(2 rows)
然后我删除 id = 2 的行
DELETE FROM dogs WHERE id = 2;
并添加另一行
INSERT INTO dogs (name, age) VALUES('mimi', 20);
该表是
id | name | age
----+-------+-----
1 | puffy | 13
3 | mimi | 20
(2 rows)
我的问题是为什么第二行中 id 的下一个数字不是 2 而是 3?我猜想某处下方某处存储了内存中的最后一个值,并且删除了具有该 id 的行并不重要。我知道如果需要,我可以显式地为 id 插入值。但我想清楚为什么会发生这种情况。什么功能或特性对此负责?它是如何工作的?