我有几个数据库,需要在它们之间交换数据。当我从 db A 导出到 db B 时,会发生 Id 冲突。我想出了两种办法,没有一种能让我满意。
选择 max(id) 然后创建新的 id 以避免冲突,但是一列存储 json 结构并且也包含 id!(历史原因)。所以我需要创建新的 ID(主键)并修改该 json 列中的所有 ID。
或者我可以为每个数据导入添加批处理信息。当我导入数据时,我会找出 sql 中的每个 id 并在它们之前添加批处理 id。如:
原始数据库如下:
ID COL_JSON
11 {id:11,name:xx ...}
我想插入一条新记录:11,插入后我在 id 之前添加了一个批处理信息“1000”
现在分贝看起来像
ID COL_JSON
11 {id:11,name:xx ...}
100011 {id:100011,name:xx ...}
下一批将是 1001,1002 1003 ...,因此如果需要插入新的 11 条记录,则数据库看起来像
ID COL_JSON
11 {id:11,name:xx ...}
100011 {id:100011,name:xx ...}
100111 {id:100111,name:xx ...}
虽然这两种方法可以解决冲突,但我觉得这两种方法很愚蠢。有什么优雅的方案吗?