Учитывая таблицу, которая имеет три столбца
- ID (первичный ключ, без автоинкрементации)
- GroupID
- SomeValue
Я пытаюсь написать одну инструкцию SQL INSERT INTO, которая сделает копию каждой строки с одним GroupID в новом GroupID.
Пример начальной таблицы:
ID | GroupID | SomeValue
------------------------
1 | 1 | a
2 | 1 | b
Цель после выполнения простого оператора INSERT INTO:
ID | GroupID | SomeValue
------------------------
1 | 1 | a
2 | 1 | b
3 | 2 | a
4 | 2 | b
Я думал, что смогу сделать что-то вроде:
INSERT INTO MyTable
( [ID]
,[GroupID]
,[SomeValue]
)
(
SELECT (SELECT MAX(ID) + 1 FROM MyTable)
,@NewGroupID
,[SomeValue]
FROM MyTable
WHERE ID = @OriginalGroupID
)
Это вызывает нарушение PrimaryKey, поскольку в конечном итоге оно будет использовать одно и то же значение Max (ID) +1 несколько раз, как кажется.
Является ли мое единственное обращение к группе операторов INSERT в операторе T-SQL WHILE с возрастающим значением Counter?
У меня также нет возможности превратить идентификатор в столбец идентификатора с автоинкрементным увеличением, поскольку это может привести к нарушению кода, для которого у меня нет источника.