У меня есть таблицы с переменнойСписок вставленной ID в SQL Server
@temp (tmpId, c1, c2, c3, d1, d2, d3)
Я хочу, чтобы вставить строки из @temp в таблицу (MyTable), имеющий столбец идентификаторов называется ID и присвоить isnerted идентификаторы строк в @temp. Я знаю, что список вставленных идентификаторов можно получить с помощью предложения OUTPUT.
INSERT INTO MyTABLE (c1, c2, c3)
OUTPUT INSERTED.id, INSERTED.c1, ... INTO @IDs (id, c1, ...)
SELECT (c1, c2, c3)
Dispite, имеющий @IDs таблицу я не могу assigne вставленные идентификаторы к tmpIds, так как с1, с2, с3 столбцы не являются уникальными. Мне нужны идентификаторы для вставки столбцов d1, d2, d3 в другую таблицу. У меня есть только одно решение. Вставка строк по одному и получение идентификатора с помощью SCOPE_IDENTITY(). Но я хотел бы использовать цикл aviod. Любая идея, как вставить эти строки за один шаг?
У вас есть первичный ключ/ограничение уникальности, определенное на 'c1, c2, c3' колоннах один @temp? Вы использовали тип табличного значения для объявления этой переменной, использовали ли вы следующий синтаксис 'DECLARE @temp TABLE (...)'? –