2014-03-07 3 views
-1

Когда я хочу, чтобы получить последние добавленный идентификатор таблицы я использую это так:Получить список всех последних вставленных идентификаторов в таблицу

insert into table1(col1,col2,col3) 
     values(val1,val2,val3) 

declare @last_id int = scope_identity() 

Теперь я хранимая процедура, которая получает значение вставляет несколько элементов:

insert into table1(col1,col2,col3) 
     select @val1,@val2,val3 from table2 where [email protected] //@value is a single value that is passed to procedure as argument 

Теперь, как я могу получить список идентификаторов этих нескольких строк, которые добавлены в таблицу1?

ответ

2
declare @inserted table (Id int) 

insert into table1(col1,col2,col3) 
output inserted.Id into @inserted (Id) 
select @val1,@val2,val3 
from table2 
where [email protected] 

select * from @inserted 
1

SCOPE_IDENTITY() получает последнее генерируемое значение идентификатора в столбце идентификации. чтобы получить все вновь вставленные значения, вам нужно будет использовать предложение OUTPUT вместе с табличной переменной. Посмотрите ниже, как вы можете это сделать.

DECLARE @New_IDs TABLE(IDs INT) 


insert into table1(col1,col2,col3) 
OUTPUT inserted.Id_column INTO @New_IDs 
select @val1,@val2,val3 
from table2 
where [email protected] 

SELECT * FROM @New_IDs 
Смежные вопросы