【问题标题】:Add master-detail MySQL table data to another database将主从 MySQL 表数据添加到另一个数据库
【发布时间】: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

这样每个分支上的主键永远不会相同

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我能想到两种简单的方法:

    1. 不要使用自动增量。例如,使用 UUID。或者:

    2. 向 Transaction-master 添加另一个字段 siteId,并使其成为复合键的一部分。然后,使用Transaction_master_IDsiteId 作为事务详细信息的外键。请参阅此问题的第 4 个答案以了解如何执行此操作:Multiple-column foreign key in MySQL?

    【讨论】:

    • 嗯,第 1 点是完全正确的,没有自动增量不会出现任何问题,但我已经构建了我的数据库并完成了代码.. 我得到了另一个更适合我的情况的解决方案,该解决方案将使用MySQL 上的“auto_increment_offset”和“auto_increment_increment”
    猜你喜欢
    • 2011-04-25
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多