2010-04-24 1 views
1

J'utilise l'instruction SQL Server suivante pour insérer des enregistrements et renvoyer la valeur d'ID auto-inc unique en une fois. Je me demande s'il y a une façon plus simple/plus rapide/meilleure de le faire?Existe-t-il un meilleur moyen de récupérer un identifiant unique lors de l'insertion?

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: La solution qui me convient le mieux est la suivante:

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

Très génération de code convivial. Vous pouvez facilement générer ces instructions pour n'importe quelle structure de données par réflexion. Fonctionne aussi très bien comme un substitut à Linq2SQL Dataset.InsertOnSubmit().

+0

dupliquer de http://stackoverflow.com/questions/481395/t-sql-identity-scope-identity-output-and-other-methods-of-retrieving-last – devio

Répondre

0

C'est un exemple d'utilisation @@ Identity

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

pour plus d'informations, consultez here

0

Utilisez SCOPE_IDENTITY() au lieu de @ @IDENTITÉ.

Voir également les réponses à this question.

Questions connexes