Tsql 有没有办法在T-SQL中快速复制记录?

Tsql 有没有办法在T-SQL中快速复制记录?,tsql,sql-server-2008,duplicate-data,Tsql,Sql Server 2008,Duplicate Data,我需要复制选定的行,所有字段都完全相同,除了由SQL自动添加的ID ident int 复制/克隆一条或多条记录(最多50条)的最佳方法是什么 MS SQL 2008中是否有任何T-SQL功能,或者我是否需要在存储过程中选择insert?实现所需功能的唯一方法是使用insert语句,该语句枚举除标识列之外的每一列 当然,您可以通过在Insert语句中使用select语句来选择要复制的多行。但是,我假设这将违反您的业务键(您在表上的另一个唯一约束,而不是您拥有的代理键?),并且还需要修改其他列 I

我需要复制选定的行,所有字段都完全相同,除了由SQL自动添加的ID ident int

复制/克隆一条或多条记录(最多50条)的最佳方法是什么


MS SQL 2008中是否有任何T-SQL功能,或者我是否需要在存储过程中选择insert?

实现所需功能的唯一方法是使用insert语句,该语句枚举除标识列之外的每一列

当然,您可以通过在Insert语句中使用select语句来选择要复制的多行。但是,我假设这将违反您的业务键(您在表上的另一个唯一约束,而不是您拥有的代理键?),并且还需要修改其他列

Insert MyTable( ...
Select ...
From MyTable
Where ....

如果能够在插入行时检查复制条件,则可以在表上放置INSERT触发器。这将允许您在插入列时检查列,而不必在整个表中进行选择。

如果是纯副本(减去ID字段),则以下操作将起作用(将“NameOfExistingTable”替换为要从中复制行的表,并可以选择使用Where子句限制要复制的数据):

SELECT * 
INTO #TempImportRowsTable
FROM (
    SELECT *
    FROM [NameOfExistingTable]
    -- WHERE ID = 1
) AS createTable

-- If needed make other alterations to the temp table here

ALTER TABLE #TempImportRowsTable DROP COLUMN Id

INSERT INTO [NameOfExistingTable]
SELECT * FROM #TempImportRowsTable

DROP TABLE #TempImportRowsTable