将master-detail MySQL表数据添加到另一个数据库

时间:2013-07-28 07:57:30

标签: php mysql

我在不连接互联网的不同地方创建了3个数据库。

DB A是主办公室数据库

DB B是分支机构1数据库

DB C是分支机构2数据库

每天晚上我都要从B& D的交易表中复制数据。 C进入A.并将A数据复制到B& C在第二天早上使库存数据同步。

交易表由2个表组成

1。交易主

| ID | TRX_NUMBER |日期| CUSTOMER_ID |

2。交易细节

| ID | TRANSACTION_MASTER_ID | ITEM_ID |数量|价格| TOTALS |

transaction-details.TRANSACTION_MASTER_ID是transaction-master.ID的外键

问题是transaction-master.ID是自动增量值,所以如何复制 transaction-master&交易细节数据进入A而不中断 transaction-master&交易详情外键值

因为如果在B上我的表有1作为transaction-master.ID值,那么当我将B数据插入A时,可能1已经在使用并将变为2(因为自动增量)并将导致外关于事务详细信息的关键字.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

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

1 个答案:

答案 0 :(得分:0)

我可以想到两个简单的方法:

  1. 请勿使用自动增量。例如,使用UUID。 OR:

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