回答

收藏

在为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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则