2010-04-24 3 views
1

Я использую следующий оператор SQL Server, чтобы вставлять записи и возвращать уникальное значение идентификатора автоинкремента всего за один снимок. Интересно, есть ли более простой/быстрый/лучший способ сделать это?Есть ли лучший способ получить уникальный идентификатор на INSERT?

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

дубликат http://stackoverflow.com/questions/481395/t-sql-identity-scope-identity-output-and-other-methods-of-retrieving-last – devio

ответ

0

Это пример использования @@ IDENTITY

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

для получения дополнительной информации посетите here

0

Использование SCOPE_IDENTITY() вместо @ @IDENTITY.

См. Также ответы на вопросы this question.

Смежные вопросы