在为SQL TableType插入批量记录时获取SCOPE_IDENTITY值
技术问答
217 人阅读
|
0 人回复
|
2023-09-14
|
我有以下表格结构。为了方便起见,我只标记单列
) l1 o7 e$ I3 S. \. E/ qTable_A(Id,Name,Desc), M' [% t( b2 Y' u/ p7 p
Table_1(Id 这是标识列 ,Name..)
% I" q$ s# l- u0 W# w# c- E# n' u+ k, hTable_2(Id 这是标识列 ,Table_A_Id,Table_1_Id)Table_1和Table_2之间的关系是 1...*$ o& s1 J% b* ]: ]5 w, }
现在,我创造了一个Table_A手表类型名称TType_Table_A(仅包含Id列,从我的C#多个记录发送到应用程序中)。我已经实现了所需的批量插入功能。
) A- c. ~1 m2 b' v4 z# C当我记录插入时,我需要的是Table_2来自TType_Table_A我想捕捉发言权下面的句子。Id的Table_2用于插入的每个记录
+ X9 X- L% D" g; F5 n7 ?$ E1 w) _declare @count int = (select count(*) from @TType_Table_A); --a variable declared for TType_Table_Aif(@count > 0) begin insert into Table_2(Table_A_Id,Table_1_Id) SELECT @SomeValue,@SomeValueAsParameter FROM @TType_Table_A; end;现在,如果插入两个记录,我想捕获它们Id这两个记录中的每个记录。
V5 v8 U5 L: p6 k) D任何输入/帮助表示赞赏
- J8 Y C% \4 c$ `这就是我知道如何实现的方法,但我想减少应用程序或用户游标数据库在存储过程中的调用7 [ Y- }4 t6 r2 \2 u9 V) z, J
在表_1中插入记录,通过记录返回Id循环.....在表_2中插入记录并返回Id
3 z* Y) r% v/ S! C或者
- X7 i& d) M/ X从TableType插入/选择在存储过程中使用游标! I5 M7 B' k# {( F- `
# ]: R% O0 p4 I# H/ l& t+ T
解决方案: ' u" A% f2 K1 f o \
我假设这是Sql Server?然后,你可以用它OUTPUT如下所示:子句:
( V4 P8 j' M6 l8 e. odeclare @NewId table (MyNewId INT) insert into Table_2(Table_A_Id,Table_1_Id) output INSERTED.MyNewId INTO @TempTable(MyNewID) SELECT SomeValue,SomeValueAsParameter FROM @TType_Table_A; SELECT * FROM @NewId |
|
|
|
|
|