从具有自动递增列的 table 复制数据

Copying data from a table with auto increment column

我在 SQL 服务器中有一个 table,其中的数据有一个自动递增列。自动递增列中的数据不是顺序的。就像 1, 2, 3, 5, 6, 7, 9(缺少 4 和 8)。

我想将此 table 中的确切数据复制到另一个新的和空的完全相同的 table。目标 table 也有一个自动递增列。

问题:当我使用下面的查询复制数据时,AttachmentID 有新的不同值

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

destination 和 source 中的 Form_Attachment table 与下面相同

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

是否有 SQL 查询解决方案使两个 table 具有相同的数据?

您可以在交易中使用 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

您也可以这样做:

  1. 删除副本table

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

    Select * 
    into new_table  
    from old_table 
    

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