【问题标题】:Primary key conflict when merging databases (auto-increment)合并数据库时的主键冲突(自增)
【发布时间】:2020-08-26 22:50:38
【问题描述】:

我有两个想要合并的 SQLite 数据库。我正在使用以下命令进行操作:

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

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

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

【问题讨论】:

    标签: sql database sqlite sql-insert


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-23
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多