合并数据库时主键冲突(自增)

Primary key conflict when merging databases (auto-increment)

我有两个要合并的 SQLite 数据库。我正在使用以下命令来完成此操作:

ATTACH "c:\other.db" AS SecondaryDB
INSERT INTO MyTable SELECT * FROM SecondaryDB.MyTable

问题是 MyTable 有一个主列 id,它在两个数据库中都是自动递增的。因此,存在主键冲突。

如何插入辅助数据库中的行,以便自动增量用于从第一个数据库的最后一个值开始的 id 列?

您想复制源中的所有行,但没有 auto-incremented 列。

只需枚举 insertselect 子句中的列 - 全部,预期为主键列。 SQLite 将自动为 auto-incremented 列分配新值。

假设你的 table 的列是 id, col1, col2, col3,你会这样做:

ATTACH "c:\other.db" AS SecondaryDB
INSERT INTO MyTable(col1, col2, col3) 
SELECT col1, col2, col3 FROM SecondaryDB.MyTable