У меня есть запрос, где мне нужно «пакетно» вставить строки в таблицу с первичным ключом без идентификатора.
--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)