使用表值参数插入数据时获取多个scope_identity

时间:2019-04-10 06:39:55

标签: sql-server temp-tables table-valued-parameters scope-identity

我正在使用表值参数在Table1中插入多行。 现在,我想使用一些值将Table1的范围标识插入到Table2中。 我该如何实现?

1 个答案:

答案 0 :(得分:1)

您可以使用Output Clause子句,让我们看一个示例

假设您的Table1看起来像这样

Table1(Table1_ID int identity, Name varchar(100), Email varchar(100), ...)

现在,我们可以插入并捕获所有新的ID和名称:

declare @OutputTbl table (ID INT, Name varchar(100))

insert into Table1(Name, Email)
output inserted.Table1_ID, inserted.Name into @OutputTbl(ID, Name)
VALUES ('john doe', 'john@somewhere.com'), 
       ('Anna', 'Anna@1com')

select * from @OutputTbl

@OutputTbl中的结果将为

ID  Name    
--  --------    
18  john doe    
19  Anna    

现在,您可以根据需要将@OutputTbl的所有行插入另一个表中

insert into Table2 (Table1_ID, Name) 
select ID, Name
from   @OutputTbl