如何设置 SQLite 自增主键从指定数字开始
如何设置 SQLite 自增主键从 10 开始
在使用 SQLite 数据库时,INTEGER PRIMARY KEY
或带 AUTOINCREMENT
的列默认是从 1 开始自增的。有时候,出于业务需求或数据格式上的要求,你可能希望自增主键从 10 开始。本篇文章将介绍几种实现方式。
📌 方法一:插入一条 ID 为 9 的记录再删除
这是最简单的一种做法:
INSERT INTO your_table(id, other_column) VALUES (9, 'placeholder');
DELETE FROM your_table WHERE id = 9;
这样,SQLite 的自增计数器就会记住 id = 9
已经使用过。之后的新记录会从 id = 10
开始自动增长。
✅ 适用情况:
- 表中主键是
INTEGER PRIMARY KEY
。 - 未使用
AUTOINCREMENT
。
📌 方法二:修改内部的 sqlite_sequence
表
如果你使用了 AUTOINCREMENT
,SQLite 会自动创建一个名为 sqlite_sequence
的内部表,用于记录每个自增表的当前最大值。
示例步骤如下:
- 创建一个带
AUTOINCREMENT
的表:
CREATE TABLE your_table (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
);
- 插入一条记录(以便让
sqlite_sequence
表中生成记录):
INSERT INTO your_table (name) VALUES ('init');
- 将自增值更新为 9(下一条将从 10 开始):
UPDATE sqlite_sequence SET seq = 9 WHERE name = 'your_table';
- 可选:删除测试数据
DELETE FROM your_table WHERE name = 'init';
✅ 适用情况:
- 表中主键使用了
AUTOINCREMENT
。 - 需要显式控制从哪个值开始自增。
❗ 注意事项
- 如果 没有使用
AUTOINCREMENT
,SQLite 会根据当前id
的最大值自动 +1。因此插入并删除id=9
的记录就足够。 - 使用
AUTOINCREMENT
会增加数据库内部维护的负担,一般只有在确实需要“全局唯一且不重复使用的 ID”时才建议使用。 - 不建议频繁或过度修改
sqlite_sequence
表,防止数据异常。