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

Get multiple scope_identity while inserting data with table-valued parameter

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

您可以为此使用 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 中的所有行插入到另一个 table 中,如果您愿意的话

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