我在不连接互联网的不同地方创建了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
这样,每个分支上的主键永远不会相同
答案 0 :(得分:0)
我可以想到两个简单的方法:
请勿使用自动增量。例如,使用UUID。 OR:
将另一个字段添加到Transaction-master,siteId
,并使其成为复合键的一部分。然后,在事务详细信息上使用Transaction_master_ID
和siteId
作为外键。请参阅此问题的答案,了解如何执行此操作:Multiple-column foreign key in MySQL?