【发布时间】:2013-03-13 10:27:07
【问题描述】:
我有几个数据库,需要在它们之间交换数据。当我从 db A 导出到 db B 时,会发生 Id 冲突。我想出了两种方法,没有一种能让我满意。
选择 max(id) 然后创建新 id 以避免冲突,但一列存储 json 结构并包含 id! (历史原因)。所以我需要创建新的 ID(主键)并修改该 json 列中的所有 ID。
或者我可以为每个数据导入添加批处理信息。当我导入数据时,我会找出 sql 中的每个 id 并在它们之前添加批处理 id。如:
原来的db喜欢:
ID COL_JSON
11 {id:11,name:xx ...}
我想插入一条新记录:11,插入后我在 id 前添加一个批处理信息“1000”
现在 db 看起来像
ID COL_JSON
11 {id:11,name:xx ...}
100011 {id:100011,name:xx ...}
下一批将是 1001,1002 1003 ...,因此如果需要插入新的 11 条记录,则 db 看起来像
ID COL_JSON
11 {id:11,name:xx ...}
100011 {id:100011,name:xx ...}
100111 {id:100111,name:xx ...}
虽然这两种方法可以解决冲突,但我觉得这两种方法很愚蠢。有什么优雅的方案吗?
【问题讨论】:
-
你说的是数据库同步方法吗?
-
不同步问题。我从应用程序 A 的数据库和一些文件中导出数据,然后导入到应用程序 B(数据库和文件)
标签: java php database database-design