合并数据库时主键冲突(自增)
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 列。
只需枚举 insert
和 select
子句中的列 - 全部,预期为主键列。 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
我有两个要合并的 SQLite 数据库。我正在使用以下命令来完成此操作:
ATTACH "c:\other.db" AS SecondaryDB
INSERT INTO MyTable SELECT * FROM SecondaryDB.MyTable
问题是 MyTable
有一个主列 id
,它在两个数据库中都是自动递增的。因此,存在主键冲突。
如何插入辅助数据库中的行,以便自动增量用于从第一个数据库的最后一个值开始的 id
列?
您想复制源中的所有行,但没有 auto-incremented 列。
只需枚举 insert
和 select
子句中的列 - 全部,预期为主键列。 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