2013-03-18 31 views
2

我在尋找最好的方式來合併2代MySQL表與overlaping主鍵值(users_id)合併2個用戶表overlaping主鍵值

兩個表都有不同的結構,

MEMEBR(member_id, memeber_email,member_dob,....)目前下一個自動增加值27014

USER(users_id,電子郵件,姓名,出生日期,......)目前下一個自動增加值23734個

兩個表屬於不同應用程序,並有男人使用引用的主鍵值(Member_id和users_id)記錄日誌/事務表。

我已經寫了查詢來從USER中選擇數據並插入MEMBER,但主要問題是重疊的IDS。 起初我想追加MEMBER中最後一條記錄後的USERS的所有記錄,但是這會生成新的IDS,並導致USER應用程序參考表中的不一致。

第二我想在MEMBER中存儲額外字段Users_id以跟蹤USER應用程序中的相關記錄。

現在在此額外字段中爲MEMBER應用程序用戶存儲什麼內容。由於現在合併的用戶將無縫地使用這兩個應用程序,所以它在這個字段中需要一個值,當然與member_id相同。

所以現在, 會員(memeber_id,Users_id,電子郵件,....) 1,1,一@ b.com 2,2,B @ b.com 。 。 。 27014,27014,z @ b.com here end MEMBER記錄 27015,1,aa @ bb.com用戶表第1條記錄表

現在我在這裏一致。

USER_ID 1兩member_id 1(1,1,一@ b.com)存在,member_id 27015(27015,1,AA @ bb.com)

要解決這個問題的另一點在我心中是對於所有現有的成員應用程序和未來的用戶,在user_id字段中放置0,意味着從USER應用程序保存現有的users_id。

幫助,如果你理解並面臨同樣的問題,或可以認爲我。

可能有人會問這個問題或REAL問題,所以。

問題: 正如上述問題解釋的,什麼都可以處理來自2個不同的應用程序合併2個用戶表時重疊ID的最佳方式,該用戶將無縫地訪問應用程序都。

任何幫助表示讚賞。

讓我知道是否需要更多信息。

回答

0

我會做到以下幾點:

  1. 創建單獨的表與新的主/自動增量鍵和所有必要的列控股合併結果
  2. 填充新表兩個表的結果從而創造新的ID
  3. 更新所有表指的是會員和用戶提供新的ID(這也可能包括停止/重新創建外鍵約束指向一個新的合併表)
  4. 刪除舊錶。
+0

它需要很多的關心和時間,任何進一步的建議。 – 2013-03-18 12:01:01

1

合併一個用戶記錄後,它的電流ID和新的ID。然後更新所有表中的這些ID:

UPDATE table1 set UserID=:newID where UserID=:oldID 
UPDATE table2 set UserID=:newID where UserID=:oldID 
etc. 

重複。

+0

是最終解決方案嗎?如果沒有任何其他捷徑​​的希望,我會這樣做。 – 2013-03-18 11:59:15