1

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

复制/克隆记录(最多 50 个)的最佳方法是什么?

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

4

3 回答 3

2

完成您想要的唯一方法是使用 Insert 语句枚举除标识列之外的每一列。

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

Insert MyTable( ...
Select ...
From MyTable
Where ....
于 2011-03-19T15:00:29.900 回答
1

如果它是纯副本(减去 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
于 2018-07-29T14:45:37.200 回答
0

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

于 2011-03-19T15:09:24.837 回答