我的公司正在将数据库模式从多个数据库(每个客户一个)发展为一个唯一的数据库。我们在使用分离的数据库时遇到了很多问题。我们决定开始使用集中式数据库。
我担心的是id
数据库中的自动递增 s。
例如,我们有产品:一个数据库中有 1、2 和 3,其他数据库中有其他产品:1、2 和 3(具有相同的 ID)。这些 ID 也用作其他表的引用。
我怎样才能将这些数据库合并为一个并且不弄乱已经插入的 ID?
我的公司正在将数据库模式从多个数据库(每个客户一个)发展为一个唯一的数据库。我们在使用分离的数据库时遇到了很多问题。我们决定开始使用集中式数据库。
我担心的是id
数据库中的自动递增 s。
例如,我们有产品:一个数据库中有 1、2 和 3,其他数据库中有其他产品:1、2 和 3(具有相同的 ID)。这些 ID 也用作其他表的引用。
我怎样才能将这些数据库合并为一个并且不弄乱已经插入的 ID?
不平凡。而且,如果你有
FOREIGN KEYS
,它会比那更糟。方案A:
对其中一个具有潜在冲突 ID 的数据库中的每个表执行此操作:
(根据避免
MAX(foo_id)
在其他数据库中选择数字。)然后继续合并匹配的表。
B 计划: 这样做的好处是在检查结果之前不会破坏任何表。
创建第三个数据库和表。编写一堆 SQL 语句以小心地将所有行从一个数据库复制到另一个数据库,然后复制到新数据库。确保以正确的顺序复制表格。希望这能让您为所有内容创建新的 ID。(我没有仔细考虑细节。)