我需要复制所有字段完全相同的选定行,除了 ID ident int 由 SQL 自动添加。
复制/克隆记录(最多 50 个)的最佳方法是什么?
MS SQL 2008 中是否有任何 T-SQL 功能,或者我是否需要在存储过程中选择插入?
我需要复制所有字段完全相同的选定行,除了 ID ident int 由 SQL 自动添加。
复制/克隆记录(最多 50 个)的最佳方法是什么?
MS SQL 2008 中是否有任何 T-SQL 功能,或者我是否需要在存储过程中选择插入?
完成您想要的唯一方法是使用 Insert 语句枚举除标识列之外的每一列。
您当然可以通过在 Insert 语句中使用 Select 语句来选择要复制的多行。但是,我认为这将违反您的业务键(您对表的其他唯一约束,而不是您拥有的代理键?)并且还需要更改其他一些列。
Insert MyTable( ...
Select ...
From MyTable
Where ....
如果它是纯副本(减去 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
如果您能够在插入行时检查重复条件,则可以在表上放置一个 INSERT 触发器。这将允许您在插入列时检查它们,而不必选择整个表。