Si vous comprenez la différence entre la Portée et de la Session , alors il sera très facile de comprendre les concepts derrière eux.
Très bel article mentionnant différence dans la session et Portée par Adam Anderson à http://blog.falafel.com/Blogs/AdamAnderson/08-04-23/T-SQL_The_difference_between_identity_scope_identity_and_ident_current.aspx
Séance signifie que la connexion actuelle qui est de l'exécution de la commande.
Champ d'application signifie que le contexte immédiat d'une commande. Chaque appel de procédure stockée s'exécute dans son propre champ d'application, et les appels imbriqués exécuter dans une étude de portée dans la procédure d'appel. De même, une commande SQL exécutée à partir d'une application ou d'un SSM s'exécute dans son propre champ d'application, et si qui commande les feux de tous les déclencheurs, chaque déclencheur s'exécute dans son propre imbriquée portée.
Maintenant que ces deux concepts sont définis, voici les différences entre les trois identité méthodes de récupération:
@@identity retourne la dernière valeur d'identité générée dans cette session , mais toute la portée.
scope_identity() renvoie la dernière valeur d'identité générée dans cette session et ce champ d'application.
ident_current() renvoie la dernière valeur d'identité générée pour une table particulière dans toute session et toute la portée.