首页 > 解决方案 > 合并数据库时的主键冲突(自增)

问题描述

我有两个想要合并的 SQLite 数据库。我正在使用以下命令来做到这一点:

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

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

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

标签: sqldatabasesqlitesql-insert

解决方案


您想从源复制所有行,但没有自动递增的列。

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

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

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

推荐阅读