我创建下表
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 值。但我想弄清楚为什么会发生这种情况。
是什么功能或特性造成了这种情况?它是如何工作的?