我尝试了下面的查询但导致多行和[SCOPE_IDENTITY]为NULL。交替是什么?
SELECT TOP 1000
[RTID],xxx,xxx
FROM [RouteTiming]
GO
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY];
GO
SELECT @@IDENTITY AS [@@IDENTITY];
GO
答案 0 :(得分: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 Clause (Transact-SQL)
如果您在存储过程或函数中,则可以使用INSERTED
表(还有一个DELETED
表),该表存储在内存中,直到范围完成。
执行插入后,只要它在同一范围内,就可以像插入其他任何其他表一样加入插入的表。我相信插入的表自SQL Server 2000以来一直存在,但绝对是在2005 +。