SQL Server : Champs compteur @@IDENTITY ou SCOPE_IDENTITY() ?
Il y a plusieurs moyens d'obtenir la dernière valeur insérée dans un champ compteur sur SQL Server (champ de type IDENTITY).
- @@IDENTITY renvoie la dernière valeur attribuée à un champ IDENTITY sur la connexion
- SCOPE_IDENTITY() renvoie la dernière valeur attribuée à un champ IDENTITY par rapport à la portée en cours.
@@IDENTITY risque de vous renvoyer une valeur fausse si vous utilisez MARS (Multiple Active ResultSet) et lors de l'utilisation d'une réplication. En fait celà se produit dans des cas où plusieurs mises à jour peuvent se produire sur la même table sur la même connexion.
SCOPE_IDENTITY() lui ne vous renverra que la valeur générée dans la portée en cours, donc pas de soucis de valeur quelques soient les fonctionnalités que vous utilisez.
Pour en savoir plus sur les champs de type compteur : http://www.sqlfr.com/tutorial.aspx?ID=512
Bon développement…
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :