提问人:Super Kai - Kazuya Ito 提问时间:9/30/2023 最后编辑:Super Kai - Kazuya Ito 更新时间:10/25/2023 访问量:61
SQLite中的AUTOINCREMENT与无AUTOINCREMENT
AUTOINCREMENT vs No AUTOINCREMENT in SQLite
问:
我把和没有放在表中,如下所示:AUTOINCREMENT
id
person
CREATE TABLE person (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT # ↑↑↑↑↑↑↑↑↑↑↑↑↑
);
CREATE TABLE person (
id INTEGER PRIMARY KEY, # No AUTOINCREMENT
name TEXT
);
然后,我在表格中添加了 3 行,如下所示:person
INSERT INTO person (name)
VALUES ('John'), ('David'), ('Lisa');
最后,我从表中得到了完全相同的 3 行,它们都将数字递增了 1,如下所示:person
id
.headers on
.mode box
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
│ 3 │ Lisa │
└────┴───────┘
那么,在表中和 no for 有什么区别呢?AUTOINCREMENT
AUTOINCREMENT
id
person
答:
1赞
Super Kai - Kazuya Ito
9/30/2023
#1
AUTOINCREMENT
可以避免重复使用已删除的号码,除非明确指定它们,而根据文档则不能。AUTOINCREMENT
例如,你把 for 放在表中,它有 3 行,如下所示:AUTOINCREMENT
id
person
CREATE TABLE person (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT -- ↑↑↑↑↑↑↑↑↑↑↑↑↑
);
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
│ 3 │ Lisa │
└────┴───────┘
然后,删除 where is 的行,然后从表中获取 2 行,如下所示:id
3
person
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
└────┴───────┘
接下来,例如,您不将 for 放入表中,它有 3 行,如下所示:AUTOINCREMENT
id
person
CREATE TABLE person (
id INTEGER PRIMARY KEY, -- No AUTOINCREMENT
name TEXT
);
SELECT * FROM person;
┌────┬───────┐
│ id │ name │
├────┼───────┤
│ 1 │ John │
│ 2 │ David │
│ 3 │ Lisa │
└────┴───────┘
然后,删除 where is 的行,然后从表中获取 2 行,如下所示:id
3
person
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
└────┴───────┘
评论