0

我尝试了下面的查询,但结果不止一行,并且 [SCOPE_IDENTITY] 为 NULL。替代品是什么?

  SELECT TOP 1000 
    [RTID],xxx,xxx
   FROM [RouteTiming]
    GO
    SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY];
    GO
    SELECT @@IDENTITY AS [@@IDENTITY];
    GO
4

1 回答 1

4

根据服务器版本(SQL Server 2005+),您可以使用以下OUTPUT子句:

INSERT INTO tablename (column names)
OUTPUT --this is where you put your select statement to get returned IDs etc.
VALUES (values in here, or you can use a select statememt as per usual)

MSDN 文章:OUTPUT 子句 (Transact-SQL)

如果您在存储过程或函数内部,则可以使用存储在内存中INSERTED的表(也有一个DELETED表),直到范围完成。
执行插入后,您可以像任何其他表一样加入插入的表,只要它在同一范围内。我相信插入的表自 SQL Server 2000 以来就已经存在,但肯定是在 2005 年以后。

MSDN 示例:使用插入和删除的表

于 2013-11-11T07:03:07.497 回答