2013-10-16 18 views
1

我在SQL Server數據庫中有兩個幾乎完全相同的表A和B.將表A中的數據複製到表B中(是身份==是)

表A包含數據和主鍵X設置爲Is Identity == No

表B不包含數據但具有主密鑰X設置爲Is Identity == YesIdentity Increment = 1, Identity Seed = 1)。

被1至100即表A中的在主鍵X增量數據具有100個記錄,在第一個記錄是1和第100個記錄是100

如何從表A中的數據複製到表B中以最簡單的方式沒有錯誤。

回答

4

你運行你的insert

set identity_insert tableB on 

insert tableB (Id, field1, field2) 
select id, field1, field2 from tablea 

set identity_insert tableB off 
+0

+1但msdn提到['IDENT_CURRENT'](http://technet.microsoft.com/en-us/library/ms175098.aspx)必須低於插入ID。 http://technet.microsoft.com/en-us/library/ms188059.aspx –

+0

天才謝謝! –

0

是的,你需要枚舉列前使用set identity_insert tableB on。另一方面 - 在B桌上的身份是必要的,而它是從A?

在主鍵X遞增1至100即表A中的數據具有100個記錄,在第一個記錄是1和第100個記錄是100

在此之後規則似乎B上的增量不需要,而身份取自表A.

最終考慮在B上RESEED以符合IDENT_CURRENT限制。 (Reseed information

+0

是的,我不得不指定領域,否則我得到一個錯誤,這是不明白的。表B確實需要身份,因爲它允許一個人添加一條新記錄,並且我想簡單地自動生成一個id。我這樣做是因爲我無法右鍵單擊A.X並設置標識==是。 –

+0

由於您的數據會及時上升,因此您的A到B查詢可能會讓您陷入麻煩,如果以後再重複一次。 B可以有任何用戶記錄已經使用的身份號碼,而A不知道。 –

0

如果確認有100行TableA中和id從1到100,沒有重複然後,您可以TableA的數據複製到tableB的輕鬆樣,

insert tableB (field1, field2) 
select field1, field2 from tableA order by id 

Id字段會自動生成,因爲它是標識列

相關問題