我尝试了下面的查询,但结果不止一行,并且 [SCOPE_IDENTITY] 为 NULL。替代品是什么?
SELECT TOP 1000
[RTID],xxx,xxx
FROM [RouteTiming]
GO
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY];
GO
SELECT @@IDENTITY AS [@@IDENTITY];
GO
我尝试了下面的查询,但结果不止一行,并且 [SCOPE_IDENTITY] 为 NULL。替代品是什么?
SELECT TOP 1000
[RTID],xxx,xxx
FROM [RouteTiming]
GO
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY];
GO
SELECT @@IDENTITY AS [@@IDENTITY];
GO
根据服务器版本(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 示例:使用插入和删除的表