我在SQL Server數據庫中有兩個幾乎完全相同的表A和B.將表A中的數據複製到表B中(是身份==是)
表A包含數據和主鍵X設置爲Is Identity == No
。
表B不包含數據但具有主密鑰X設置爲Is Identity == Yes
(Identity Increment = 1, Identity Seed = 1
)。
被1至100即表A中的在主鍵X增量數據具有100個記錄,在第一個記錄是1和第100個記錄是100
如何從表A中的數據複製到表B中以最簡單的方式沒有錯誤。
我在SQL Server數據庫中有兩個幾乎完全相同的表A和B.將表A中的數據複製到表B中(是身份==是)
表A包含數據和主鍵X設置爲Is Identity == No
。
表B不包含數據但具有主密鑰X設置爲Is Identity == Yes
(Identity Increment = 1, Identity Seed = 1
)。
被1至100即表A中的在主鍵X增量數據具有100個記錄,在第一個記錄是1和第100個記錄是100
如何從表A中的數據複製到表B中以最簡單的方式沒有錯誤。
你運行你的insert
set identity_insert tableB on
insert tableB (Id, field1, field2)
select id, field1, field2 from tablea
set identity_insert tableB off
是的,你需要枚舉列前使用set identity_insert tableB on
。另一方面 - 在B桌上的身份是必要的,而它是從A?
在主鍵X遞增1至100即表A中的數據具有100個記錄,在第一個記錄是1和第100個記錄是100
在此之後規則似乎B上的增量不需要,而身份取自表A.
最終考慮在B上RESEED以符合IDENT_CURRENT限制。 (Reseed information)
是的,我不得不指定領域,否則我得到一個錯誤,這是不明白的。表B確實需要身份,因爲它允許一個人添加一條新記錄,並且我想簡單地自動生成一個id。我這樣做是因爲我無法右鍵單擊A.X並設置標識==是。 –
由於您的數據會及時上升,因此您的A到B查詢可能會讓您陷入麻煩,如果以後再重複一次。 B可以有任何用戶記錄已經使用的身份號碼,而A不知道。 –
如果確認有100行TableA中和id從1到100,沒有重複然後,您可以TableA的數據複製到tableB的輕鬆樣,
insert tableB (field1, field2)
select field1, field2 from tableA order by id
Id字段會自動生成,因爲它是標識列
+1但msdn提到['IDENT_CURRENT'](http://technet.microsoft.com/en-us/library/ms175098.aspx)必須低於插入ID。 http://technet.microsoft.com/en-us/library/ms188059.aspx –
天才謝謝! –