推荐答案
在 SQLite 中,可以通过 INTEGER PRIMARY KEY 或 INTEGER PRIMARY KEY AUTOINCREMENT 来创建自增字段。
CREATE TABLE example_table (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);在这个例子中,id 字段将自动递增,每次插入新记录时,id 的值会自动增加。
本题详细解读
1. INTEGER PRIMARY KEY 与 AUTOINCREMENT 的区别
INTEGER PRIMARY KEY: 当使用INTEGER PRIMARY KEY时,SQLite 会自动将该字段作为自增字段。每次插入新记录时,如果没有指定id的值,SQLite 会自动为该字段分配一个比当前表中最大id值大 1 的值。AUTOINCREMENT: 使用AUTOINCREMENT关键字时,SQLite 会确保id值始终递增,并且不会重复使用已删除的id值。这意味着即使删除了表中的某些记录,新插入的记录也不会使用这些被删除的id值。
2. 使用场景
INTEGER PRIMARY KEY: 适用于大多数情况,特别是当你不需要保证id值的连续性时。AUTOINCREMENT: 适用于需要严格保证id值唯一且连续的场景,例如在某些需要严格记录顺序的系统中。
3. 示例
// www.javascriptcn.com code example
-- 创建表时不使用 AUTOINCREMENT
CREATE TABLE example_table1 (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
-- 插入数据
INSERT INTO example_table1 (name) VALUES ('Alice');
INSERT INTO example_table1 (name) VALUES ('Bob');
-- 查询数据
SELECT * FROM example_table1;
-- 创建表时使用 AUTOINCREMENT
CREATE TABLE example_table2 (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
-- 插入数据
INSERT INTO example_table2 (name) VALUES ('Charlie');
INSERT INTO example_table2 (name) VALUES ('David');
-- 查询数据
SELECT * FROM example_table2;在 example_table1 中,id 字段会自动递增,但在删除记录后,新插入的记录可能会重用已删除的 id 值。而在 example_table2 中,id 字段会严格递增,不会重用已删除的 id 值。