在INSERT上有更好的方法来检索唯一ID吗?

时间:2010-04-24 06:32:59

标签: sql-server insert

我使用以下SQL Server语句插入记录并一次性返回唯一的auto-inc ID值。想知道是否有更简单/更快/更好的方法吗?

SET NOCOUNT ON;

DECLARE @res table (ID bigint);

INSERT INTO [Titles] ([Name],[Timestamp],[Title])
OUTPUT INSERTED.ID INTO @res
VALUES ('Name','23 aug 2010','this is a title');

SELECT [ID] FROM @res;

UPD:最适合我的解决方案如下:

INSERT INTO [TestCase] ([Name],[Tags],[Timestamp],[Title])
OUTPUT INSERTED.*
VALUES ('Hello',0x22324423,'23 aug 2010','this is a title');

非常适合代码生成。您可以通过反射轻松地为任何数据结构生成这些语句。也可以替代Linq2SQL Dataset.InsertOnSubmit()

3 个答案:

答案 0 :(得分:2)

简单:

INSERT INTO [Titles] ([Name],[Timestamp],[Title]) 
OUTPUT INSERTED.ID VALUES ('Name','23 aug 2010','this is a title'); 

http://msdn.microsoft.com/en-us/library/ms177564.aspx

答案 1 :(得分:0)

这是使用@@ Identity

的示例
INSERT INTO Production.Location (Name, CostRate, Availability, ModifiedDate)
VALUES ('Damaged Goods', 5, 2.5, GETDATE());
GO
SELECT @@IDENTITY AS 'Identity';

了解更多信息,请查看here

答案 2 :(得分:0)

使用SCOPE_IDENTITY()代替@@ IDENTITY。

另见this question的答案。

相关问题