Есть ли способ быстро дублировать записи в T-SQL? - PullRequest
1 голос
/ 19 марта 2011

Мне нужно продублировать выбранные строки со всеми одинаковыми полями, кроме идентификатора id int, который автоматически добавляется SQL.

Каков наилучший способ дублировать / клонировать запись или записи (до 50)?

Есть ли какая-либо функциональность T-SQL в MS SQL 2008 или мне нужно выбрать вставку в хранимых процедурах?

Ответы [ 3 ]

2 голосов
/ 19 марта 2011

Единственный способ достичь желаемого - использовать операторы вставки, которые перечисляют каждый столбец, кроме столбца идентификаторов.

Конечно, вы можете выбрать несколько строк для дублирования, используя оператор Select в ваших операторах Insert. Однако я предполагаю, что это нарушит ваш бизнес-ключ (ваше другое уникальное ограничение на таблицу, кроме суррогатного ключа, который вы имеете право?) И потребует изменения и другого столбца.

Insert MyTable( ...
Select ...
From MyTable
Where ....
0 голосов
/ 29 июля 2018

Если это чистая копия (за исключением поля 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
0 голосов
/ 19 марта 2011

Если вы можете проверить условие дублирования при вставке строк, вы можете поместить триггер INSERT в таблицу.Это позволит вам проверять столбцы по мере их вставки, а не выбирать по всей таблице.

...