У меня есть запрос, в котором мне нужно «пакетно» вставить строки в таблицу с первичным ключом без идентификации.
--TableA
--PK int (Primary key, no-identity)
--CustNo int
INSERT INTO TableA (PK,CustNo)
SELECT (SELECT MAX(PK)+1 AS PK FROM TableA), CustNo
FROM Customers
(упрощенный пример - пожалуйста, не комментарий о возможных проблемах параллелизма: -))
Проблема в том, что он не увеличивает PK "для каждой" обработанной строки, и я получаю нарушение первичного ключа.
Я знаю, как это сделать с помощью цикла «курсор / пока», но я бы хотел избежать этого и решить его на основе наборов, если это вообще возможно?
(работает SQL Server 2008 Standard )