2016-01-20 56 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

相关问题