Sql server 将多行插入具有instead of触发器的表时,获取标识值的值

Sql server 将多行插入具有instead of触发器的表时,获取标识值的值,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我在一个表a中插入了几行,该表有一个而不是insert触发器和一个标识列 然后我需要在表B中插入这么多行,其中每一行都包含对a中插入的行的引用 问题是,我不能在上使用output子句,因为不会设置标识(由于触发器) 我知道对于一行我可以使用@@identity,只要在触发器中插入行是最后一个插入语句,但这里我说的是多行 如何实现这一点?我使用了这样的代码(您可以在OUTPUT子句中使用table变量) declare@T表(requestID int); 插入() 将inserted.Reque

我在一个表a中插入了几行,该表有一个
而不是insert
触发器和一个
标识

然后我需要在表B中插入这么多行,其中每一行都包含对a中插入的行的引用

问题是,我不能在上使用
output
子句,因为不会设置标识(由于触发器)

我知道对于一行我可以使用
@@identity
,只要在触发器中插入行是最后一个插入语句,但这里我说的是多行

如何实现这一点?

我使用了这样的代码(您可以在OUTPUT子句中使用table变量)

declare@T表(requestID int);
插入()
将inserted.RequestID输出到@T
值(),();
插入(ID)从@T中选择RequestID;

朋友也有类似的问题,。您是否在同一过程中插入表A和表B?我想您应该使用一个临时表。我建议您在开始之前适当地创建这些标识,并使用这些标识插入表A和表B。这是一个非常好的问题。如果没有临时表,则可以使用dome i)在表A和表B上创建视图ii)在看法iii)此处插入视图后传递所有值iv)触发器内部写入查询以使用输出插入到表A中v)触发器内部的下一条语句插入到表B中请尝试并让我们知道。
declare @T table (requestID int); 
INSERT <tableA> (<fields>) 
       OUTPUT inserted.RequestID into @T 
VALUES( <fieldValues1> ),( <fieldValues2> ) ; 
Insert <tableB> (ID) select RequestID from @T;