我在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查询解决方案使两个表具有相同的数据?
答案 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)
你也可以这样做:
删除副本表
创建为select,它会将确切的结构和数据复制到新表中。
Select *
into new_table
from old_table
答案 2 :(得分:1)
您可以使用此命令:SET IDENTITY_INSERT为ON