2014-05-12 59 views
0

我有2個數據庫DB1和DB2。我需要編寫查詢將數據從DB2複製到DB1。 這兩個數據庫都有相同的表結構。Sql Server - 在一個表中插入數據以及另一個表的新自動遞增插入的ID

例如:

CREATE TABLE DB1.Group(
GroupID [int] IDENTITY(1,1) NOT NULL, 
[Company] [varchar](10) NOT NULL, 
[Description] [varchar](1000) NOT NULL 
)  

CREATE TABLE DB1.Instance(
[InstanceID] [int] IDENTITY(1,1) NOT NULL, 
[Description] [varchar](1000) NOT NULL, 
[GroupID] [int] NOT NULL, 
) 

予讀取DB2.Group中的數據和DB1.Group插入:

Insert into DB1.Group (Company,Description) 
select Company,Description from DB2.Group 

的的GroupID是自動遞增在DB1中。而且我不想關閉,因爲會與現有數據發生衝突。

現在,在將數據插入到DB1.Instance,我需要提供DB1.Group表的新自動遞增插入IDS(組ID)

Insert into DB1.Instance (Description,GroupID) 
select Description, GroupID from DB2.Instance 

請指導我怎樣才能做到這一點。 謝謝。

回答

0

用新密鑰插入第一個表(在插入時保留pk空白)並在舊密鑰的DB1表中創建(臨時)col。在舊密鑰列上查找(加入)你的第二次插入以獲得新的fk。當你完成刪除舊密鑰列和你完成。

這裏是SQL:

CREATE TABLE DB1.Group(
GroupID [int] IDENTITY(1,1) NOT NULL, 
[Company] [varchar](10) NOT NULL, 
[Description] [varchar](1000) NOT NULL, 
[old_key] [int] 
)  

CREATE TABLE DB1.Instance(
[InstanceID] [int] IDENTITY(1,1) NOT NULL, 
[Description] [varchar](1000) NOT NULL, 
[GroupID] [int] NOT NULL, 
) 

Insert into DB1.Group (Company,Description, old_key) 
select Company,Description,GroupID from DB2.Group 

Insert into DB1.Instance (Description,GroupID) 
select Description, DB1.Group.GroupID 
from DB2.Instance join DB1.Group ON DB1.Group.old_key = DB2.Instance.GroupID 

ALTER TABLE DB1.Group DROP COLUMN old_key 
+0

謝謝Trishan,它終於成功了!謝謝! – user3627225

相關問題