Cola Life long learning

如何设置 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 的内部表,用于记录每个自增表的当前最大值。

示例步骤如下:

  1. 创建一个带 AUTOINCREMENT 的表:
CREATE TABLE your_table (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT
);
  1. 插入一条记录(以便让 sqlite_sequence 表中生成记录):
INSERT INTO your_table (name) VALUES ('init');
  1. 将自增值更新为 9(下一条将从 10 开始):
UPDATE sqlite_sequence SET seq = 9 WHERE name = 'your_table';
  1. 可选:删除测试数据
DELETE FROM your_table WHERE name = 'init';

✅ 适用情况:

  • 表中主键使用了 AUTOINCREMENT
  • 需要显式控制从哪个值开始自增。

❗ 注意事项

  • 如果 没有使用 AUTOINCREMENT,SQLite 会根据当前 id 的最大值自动 +1。因此插入并删除 id=9 的记录就足够。
  • 使用 AUTOINCREMENT 会增加数据库内部维护的负担,一般只有在确实需要“全局唯一且不重复使用的 ID”时才建议使用。
  • 不建议频繁或过度修改 sqlite_sequence 表,防止数据异常。

^