使用自动增量列从表中复制数据

时间:2016-01-20 07:49:42

标签: sql sql-server auto-increment

我在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查询解决方案使两个表具有相同的数据?

3 个答案:

答案 0 :(得分:6)

您可以在交易中使用IDENTITY插入SET IDENTITY_INSERT ON列(不要忘记以后将其关闭):

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

答案 1 :(得分:1)

你也可以这样做:

  1. 删除副本表

  2. 创建为select,它会将确切的结构和数据复制到新表中。

    Select * 
    into new_table  
    from old_table 
    

答案 2 :(得分:1)

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