sql - 合并数据库时的主键冲突(自增)
问题描述
我有两个想要合并的 SQLite 数据库。我正在使用以下命令来做到这一点:
ATTACH "c:\other.db" AS SecondaryDB
INSERT INTO MyTable SELECT * FROM SecondaryDB.MyTable
问题是它有一个在两个数据库中自动递增MyTable
的主列。id
因此,存在主键冲突。
如何插入辅助数据库中的行,以便id
从第一个数据库的最后一个值开始的列使用自动增量?
解决方案
您想从源复制所有行,但没有自动递增的列。
只需枚举insert
andselect
子句中的列 - 全部,预期主键列。SQLite 将自动为自动递增的列分配新值。
假设你的表的列是id, col1, col2, col3
,你会这样做:
ATTACH "c:\other.db" AS SecondaryDB
INSERT INTO MyTable(col1, col2, col3)
SELECT col1, col2, col3 FROM SecondaryDB.MyTable
推荐阅读
- javascript - ajax调用后jQuery提交功能不起作用
- rascal - 条形图的水平轴
- redux - mapStateToProps 之前的 Redux 预处理存储?
- javascript - react-native: 通过 npm 安装后无法导入 react-native
- python - 如何让 django 提供非静态 js 文件?
- hive - 查询具有大量列的 Hive 表时,是否可以减少 MetaStore 检查的数量?
- graphql - 如何使用 react-hooks 在一个地方处理 apollo 错误?
- javascript - 反应,从另一个组件读取 const
- java - 如何将仅存在于内存中的对象文件存储为存储系统内部的文件?
- python - vtkWindowToImageFilter 的速度太慢,如何加快速度?