将多行插入到具有而不是触发器的表中时,获取IDENTITY值的值

时间:2014-02-07 14:03:42

标签: sql-server sql-server-2008-r2

我在表A中插入了几行,其中instead of insert触发器和identity列。

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

问题是,我不能在A上使用output子句,因为身份不会被设置(由于触发器)。

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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

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

declare @T table (requestID int); 
INSERT <tableA> (<fields>) 
       OUTPUT inserted.RequestID into @T 
VALUES( <fieldValues1> ),( <fieldValues2> ) ; 
Insert <tableB> (ID) select RequestID from @T;