推荐答案
在 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. 示例
-- -------------------- ---- ------- -- ------- ------------- ------ ----- -------------- - -- ------- ------- ---- ---- ---- --- ---- -- -- ---- ------ ---- -------------- ------ ------ ---------- ------ ---- -------------- ------ ------ -------- -- ---- ------ - ---- --------------- -- ------ ------------- ------ ----- -------------- - -- ------- ------- --- -------------- ---- ---- --- ---- -- -- ---- ------ ---- -------------- ------ ------ ------------ ------ ---- -------------- ------ ------ ---------- -- ---- ------ - ---- ---------------
在 example_table1
中,id
字段会自动递增,但在删除记录后,新插入的记录可能会重用已删除的 id
值。而在 example_table2
中,id
字段会严格递增,不会重用已删除的 id
值。