我使用以下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()
。
答案 0 :(得分:2)
简单:
INSERT INTO [Titles] ([Name],[Timestamp],[Title])
OUTPUT INSERTED.ID VALUES ('Name','23 aug 2010','this is a title');
答案 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的答案。