2009-09-14 5 views
4

J'utilise SQL Server 2005 avec une table avec un champ de clé primaire de type varchar(40). Je dois obtenir la valeur de clé primaire du dernier enregistrement inséré. J'ai essayé scope_identity mais cela ne fonctionne pas. Comment puis-je l'obtenir?Comment puis-je obtenir la dernière clé primaire insérée?

+2

Comment les valeurs de clé primaire créées? –

Répondre

3

J'ai trouvé le résultat.

code:

insert into T 
output inserted.pk 
values ('new item'); 
+0

Cela devrait fonctionner pour vous. Scope_identity ne fonctionne qu'avec une clé d'identité. –

1

Si votre identifiant est un varchar, je suppose qu'il n'est pas généré automatiquement, donc vous devriez le savoir avant d'insérer un enregistrement. BTW ne pouvez-vous pas simplement sélectionner votre identifiant après avoir inséré un enregistrement? Quelque chose comme ceci:

CREATE PROC InsertXXX(... value parameters...) 
AS 
BEGIN 
INSERT ..... 
SELECT ID FROM MyTable 
END 

MISE À JOUR:

Si vous voulez connaître le dernier enregistrement inséré et son numéro d'identification avant d'insérer un nouveau record, il peut être un peu plus difficile en fonction des valeurs d'identité.

Si vous pouvez trouver le dernier enregistrement par le tri colonne ID vous pouvez le faire comme suit:

SELECT Max(ID) FROM myTable 

Sinon, vous pouvez avoir un DateTime déposé (CreationDate par exemple) qui maintient le temps d'insertion de la record.Vous pouvez faire comme suit:

SELECT ID FROM MyTable WHERE CreationDate=(SELECT Max(CreationDate) FROM MyTable) 
Questions connexes