Есть ли лучший способ получить уникальный идентификатор при вставке? - PullRequest
1 голос
/ 24 апреля 2010

Я использую следующую инструкцию 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 ]

2 голосов
/ 24 апреля 2010

Simpler:

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

0 голосов
/ 24 апреля 2010

Используйте SCOPE_IDENTITY () вместо @@ IDENTITY.

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

0 голосов
/ 24 апреля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...