一尘不染

从具有自动增量列的表中复制数据

sql

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


阅读 163

收藏
2021-05-23

共1个答案

一尘不染

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

如何使用SQL Server 2008打开和关闭IDENTITY_INSERT?

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
2021-05-23