我在
AUTOINCREMENT
表中为id
放置和未放置person
,如下所示:
CREATE TABLE person (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT # ↑↑↑↑↑↑↑↑↑↑↑↑↑
);
CREATE TABLE person (
id INTEGER PRIMARY KEY, # No AUTOINCREMENT
name TEXT
);
然后,我在
person
表中添加了 3 行,如下所示:
INSERT INTO person (name)
VALUES ('John'), ('David'), ('Lisa');
最后,我从
person
表中得到了完全相同的 3 行,两者都将 id
的数字增加了 1,如下所示:
.headers on
.mode box
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
│ 3 │ Lisa │
└────┴───────┘
那么,
AUTOINCREMENT
表中的AUTOINCREMENT
,id
和没有person
有什么区别?
AUTOINCREMENT
可以根据文档避免重复使用已删除的号码。
例如,您将
AUTOINCREMENT
表示 id
放入 person
表中,它有 3 行,如下所示:
CREATE TABLE person (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT # ↑↑↑↑↑↑↑↑↑↑↑↑↑
);
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
│ 3 │ Lisa │
└────┴───────┘
然后,删除
id
为 3
的行,然后从 person
表中获取 2 行,如下所示:
DELETE FROM person where id = 3;
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
└────┴───────┘
现在,您向
person
表添加一行,然后将 4
添加到 id
,如下所示:
INSERT INTO person (name) values ('Anna');
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
│ 4 │ Anna │ <- Here
└────┴───────┘
此外,如果通过显式将
person
设置为 3
向 id
表添加一行,则 3
将添加到 id
,如下所示:
INSERT INTO person (id, name) values (3, 'Anna');
# ↑↑ # ↑
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
│ 3 │ Anna │ <- Here
└────┴───────┘
接下来,例如,您不在
AUTOINCREMENT
表中将 id
放入 person
,它有 3 行,如下所示:
CREATE TABLE person (
id INTEGER PRIMARY KEY, # No AUTOINCREMENT
name TEXT
);
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
│ 3 │ Lisa │
└────┴───────┘
然后,删除
id
为 3
的行,然后从 person
表中获取 2 行,如下所示:
DELETE FROM person where id = 3;
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
└────┴───────┘
现在,您向
person
表添加一行,然后将 3
添加到 id
,如下所示:
INSERT INTO person (name) values ('Anna');
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
│ 3 │ Anna │ <- Here
└────┴───────┘