2013-07-28 129 views
1

我在不连接到Internet的不同位置创建3个数据库。将master-detail MySQL表数据添加到另一个数据库

DB A是主办公室数据库

DB B是分支办公室1的数据库

DB C是分公司2数据库

每天晚上我需要从交易表数据从乙& C来复制转化为A.并在第二天早上将A数据复制到B & C中以使股票数据同步。

交易表由2个表组成

1。交易大师

| ID | TRX_NUMBER | DATE | CUSTOMER_ID |

2。交易详情

| ID | TRANSACTION_MASTER_ID | ITEM_ID |数量| PRICE |总计|

交易details.TRANSACTION_MASTER_ID是外键transaction-master.ID

的问题是transaction-master.ID是自动增量值,所以如何数据复制交易主&交易细节成A无间断交易大师&交易明细外键值

因为如果在B上我的表有1作为transaction-master.ID值,那么当我将B数据插入到A中时,可能1已经在使用并且将变为2(因为是自动增量)并且会导致外键交易细节.TRANSACTION_MASTER_ID将打破

解决此问题的最佳做法是什么?

SOLUTION: 我得到从IRC, 使用 “auto_increment_offset” 和 “auto_increment_increment” MySQL的信道良好的解决方案上的MySQL

集auto_increment_offset答:1,B:2,C:3

上A,B

集auto_increment_increment 3,和C

这样的主键决不会在每个分支上相同

回答

0

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

  1. 不要使用自动增量。使用例如UUID。 OR:

  2. 将另一个字段添加到Transaction-master,siteId,并使其成为复合键的一部分。然后,使用Transaction_master_IDsiteId作为交易详情的外键。见TH4回答这个问题,看看如何做到这一点:Multiple-column foreign key in MySQL?

+0

嘛,点1是完全正确的,不带自动增量出现没有问题,但我已经建立自己的数据库,并完成代码.. 我有另一种解决方案更适合我的情况,该解决方案是在MySQL上使用“auto_increment_offset”和“auto_increment_increment” – frozenmaiden

相关问题