Forum Clubic

Récupérer la clé de la dernière ligne mise à jour

Bonjour,
Dans une procédure stockée, je mets la ligne d’une table à jour.
Je recherche à retrouver la clé (identité) de cette dernière (proprement) au sein de la procédure stockée.
Je sais je @@identity et scope_identity ne fonctionnent que pour les instructions insert (dernière valeur insérée).

Est-ce que vous auriez une astuce ?

Par avance merci.
Edité le 18/06/2009 à 10:45

Quel système? (mysql, oracle, …)

Je ne crois pas qu’il y ait de façon propre, à moins de faire une recherche sur une clef fonctionnelle (et unique)…

C’est pour SQL Server.

Tu peux utiliser la close OUTPUT (SQL 2005 et + seulement):

declare @tmpTable table (ID int)
Update tbl_Truc
	Set ObjectName = 'zzzzzzzz'
	OUTPUT inserted.ID into @tmpTable
Where ObjectName = 'abcdef'
Select * From @tmpTable

OUTPUT marche avec insert, update et delete, tu peux soit faire un OUTPUT dans une autre table avec le INTO ou alors recevoir le resultat directement sans le INTO.

Dans un update tu utilises inserted pour les valeurs apres l’update et deleted pour les valeurs avant.
Tu peux aussi utiliser inserted.* pour recevoir la ligne entiere.

Tu peux lire toutes les infos dans les books online (cherche apres OUTPUT clause).