【发布时间】:2013-07-28 04:33:33
【问题描述】:
我在不同的地方创建了 3 个没有连接到互联网的数据库。
DB A 是总部数据库
DB B 是分支机构 1 数据库
DB C 是 Branch office 2 数据库
每天晚上我需要将事务表中的数据从 B & C 复制到 A。并在第二天早上将 A 数据复制到 B & C 以使股票数据同步。
事务表由 2 个表组成
1 .交易大师
|身份证 | TRX_NUMBER |日期 | CUSTOMER_ID |
2 。交易详情
|身份证 | TRANSACTION_MASTER_ID |项目 ID |数量 |价格 |总计 |
transaction-details.TRANSACTION_MASTER_ID 是 transaction-master.ID 的外键
问题是 transaction-master.ID 是自动递增值,所以如何将 transaction-master & transaction-details 数据复制到 A 而不会中断 transaction-master & transaction-details foreign关键值?
因为如果在 B 上我的表有 1 作为 transaction-master.ID 值,那么当我将 B 数据插入 A 时,可能 1 已在使用中并将更改为 2(因为自动递增)并会导致外部transaction-details 上的键。TRANSACTION_MASTER_ID 将中断
解决此问题的最佳做法是什么?
解决方案: 我从 IRC 上的 MySQL 频道得到了很好的解决方案, 在 MySQL 上使用“auto_increment_offset”和“auto_increment_increment”
设置 auto_increment_offset A: 1, B: 2, C:3
在 A、B 和 C 上设置 auto_increment_increment 3
这样每个分支上的主键永远不会相同
【问题讨论】: