IDENT_CURRENT est similaire aux fonctions d'identité SCOPE_IDENTITY et @@IDENTITY de SQL Server 2000. Ces trois fonctions renvoient les dernières valeurs d'identité générées. Toutefois, la portée et la session sur lesquelles le paramètre last est défini diffèrent pour chacune de ces fonctions :
-
IDENT_CURRENT renvoie la dernière valeur d'identité générée pour une table spécifique dans n'importe quelles session et étendue.
-
@@IDENTITY renvoie la dernière valeur d'identité générée pour n'importe quelle table dans la session en cours et l'ensemble des étendues.
-
SCOPE_IDENTITY renvoie la dernière valeur d'identité générée pour n'importe quelle table dans la session et l'étendue en cours.
Lorsque la valeur IDENT_CURRENT est NULL (si la table n'a jamais contenu de ligne ou a été tronquée), la fonction IDENT_CURRENT retourne la valeur de départ.
Les instructions et transactions ayant échoué peuvent modifier l'identité actuelle d'une table et créer des écarts dans les valeurs de colonnes d'identité. La valeur d'identité n'est jamais annulée, même si la transaction qui a tenté d'insérer la valeur dans la table n'est pas validée. Par exemple, si une instruction INSERT échoue à cause d'une violation IGNORE_DUP_KEY, la valeur d'identité actuelle de la table est quand même incrémentée.
Soyez prudent lorsque vous utilisez IDENT_CURRENT pour prévoir la valeur d'identité générée suivante. La valeur effectivement générée peut être différente de la somme des valeurs IDENT_CURRENT et IDENTITY_INCR si d'autres sessions effectuent des insertions.