2010-03-11 81 views
2

我們試圖將兩個不同的數據庫放在一起,但兩個數據庫都使用相同的ID。不同的信息,但我們會有兩個具有相同ID的用戶。有沒有一種方法可以在一個數據庫中更改ID,然後使用該ID更新每個表?更改ID和更新表

回答

2

如果你有沒有依賴性照顧,真是太簡單的解決方案浮現在腦海:

僞代碼:

SELECT max(id) FROM database1.tablename 
// Returns 10389 

UPDATE database2.tablename SET id = (id + 10389) 
// Sets 1st record to 10390 
//  2nd record to 10391 
//  3rd record to 10392 
...... 
0

如果它的自動增量ID列,你可以這樣做:


SELECT //(columns except id) 
INTO new_table_name [IN otherdatabase] 
FROM old_tablename 

和tadaa!

0

我們正在研究這樣一個項目,答案是登臺表。對將要插入的數據進行分級併爲新ID添加一列。插入父記錄並更新臨時表中的新ID(SQL服務器對輸出子句有幫助,我不知道其他dbs)。現在當你插入子記錄時,你使用新的ID而不是舊的ID。另一種方法是將舊ID添加到父表中。插入到子表時,使用它來加入以獲取新ID。當所有數據遷移時,請刪除該列。

0

假定沒有其他處理的數據庫1和數據庫2是怎麼回事,試試這個:

1)在數據庫中1得到數據庫最多2個ID

2),刪除所有外鍵關聯3)在數據庫2中,在ID爲自動增量/標識的表上,您將不得不添加新的列ID2並使用UPDATE YourTable SET ID2=ID+{max ID from database 1}填充它,然後刪除原始ID列,然後重命名ID2以ID

4)在databa SE 2,對於使用此ID作爲FK所有其它表,在數據庫2中使用UPDATE OtherTable SET ID=ID+{max ID from database 1}

5)改變的ID,還原外鍵,以驗證在數據庫2中的數據

6),數據導出到文件

7)在數據庫1中,從數據庫2導入文件