使用 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
我正在使用 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