2016-01-20 54 views
2

我在SQL Server中擁有一個具有自動增量列的數據表。自動增量列中的數據不是順序的。這就像1, 2, 3, 5, 6, 7, 9(缺少4和8)。從自動增量列中複製表中的數據

我想將此表中的確切數據複製到另一個新鮮且空白的相同表格中。目的地表格還有一個自動增量列。

問題:當我使用下面的查詢複製數據時,AttachmentID有新的和不同的價值觀

INSERT INTO FPSDB_new.dbo.Form_Attachment 
    SELECT 
     CategoryID 
    FROM 
     FPSDB.dbo.Form_Attachment 

Form_Attachment表中的目的地和來源下同

CREATE TABLE [dbo].[Form_Attachment] 
(
    [AttachmentID] [int] IDENTITY(1,1) NOT NULL, 
    [CategoryID] [int] NULL 
) 

有SQL查詢解決方案使兩個表具有相同的數據?

回答

6

您可以在您的交易使用SET IDENTITY_INSERT ON插入到一個IDENTITY列(不要忘記將其關閉後):

How to turn IDENTITY_INSERT on and off using SQL Server 2008?

SET IDENTITY_INSERT FPSDB_new.dbo.Form_Attachment ON 

INSERT INTO FPSDB_new.dbo.Form_Attachment (AttachmentID, CategoryID) 
SELECT 
    AttachmentID, 
    CategoryID 
FROM 
    FPSDB.dbo.Form_Attachment 

SET IDENTITY_INSERT FPSDB_new.dbo.Form_Attachment OFF 
+0

你的答案是正確的,但如果我有目標表中的數據,我想與源表的更換行。那麼我如何更新目標表 – shomaail

+0

@shomaail的行,您將需要先刪除匹配的行。或者看看'MERGE'操作。 – Dai

1

你也可以這樣做:

  1. 拖放副本表

  2. 創建爲select,這會將確切的結構和數據複製到新表中。

    Select * 
    into new_table 
    from old_table 
    
1

您可以使用此命令:SET IDENTITY_INSERT爲ON

相關問題