如何将TableA插入生成的ID用于TableB的INSERT语句
解决关联表插入时获取新ID的问题
你可以通过两种方式使用临时表@NEWID中的新ID来插入TableB:
方法一:从临时表查询取值(支持批量插入)
如果TableA可能插入多条数据,这种方法可以一次性将所有新生成的ID对应插入TableB:
DECLARE @NEWID table(NewID Numeric(19, 0)); INSERT [dbo].[TableA] ([Name], [Active]) OUTPUT INSERTED.Id INTO @NEWID (NewID) VALUES ('testtesttest', 1); -- 从临时表中读取新ID,插入TableB INSERT [dbo].[TableB] ([Name], [A_Id]) SELECT 'name for b', NewID FROM @NEWID;
方法二:使用单个变量存储ID(适合单条插入)
如果确定只向TableA插入一行数据,直接用变量存储新ID会更简洁:
DECLARE @NewID Numeric(19, 0); INSERT [dbo].[TableA] ([Name], [Active]) OUTPUT INSERTED.Id INTO @NewID VALUES ('testtesttest', 1); INSERT [dbo].[TableB] ([Name], [A_Id]) VALUES ('name for b', @NewID);
两种方式的核心都是获取TableA插入时生成的Id,区别在于是否支持批量场景。
内容的提问来源于stack exchange,提问作者user1094553
相关产品推荐
相关产品推荐

