2013-07-28 127 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

相關問題