Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

@@IDENTITY, SCOPE_IDENTITY(), OUTPUT et autres méthodes de récupération de la dernière identité

Cela dépend de ce que vous essayez de faire...

@@IDENTITÉ

Renvoie la dernière valeur IDENTITY produite sur une connexion, quelle que soit la table qui a produit la valeur et quelle que soit la portée de l'instruction qui a produit la valeur.@@IDENTITY renverra la dernière valeur d'identité entrée dans une table dans votre session en cours. @@IDENTITY est limité à la session en cours et n'est pas limité à la portée actuelle. Par exemple, si vous avez un déclencheur sur une table qui provoque la création d'une identité dans une autre table, vous obtiendrez l'identité qui a été créée en dernier, même si c'est le déclencheur qui l'a créée.

SCOPE_IDENTITY()

Renvoie la dernière valeur IDENTITY produite sur une connexion et par une instruction dans la même portée, quelle que soit la table qui a produit la valeur. SCOPE_IDENTITY() est similaire à @@IDENTITY, mais elle limitera également la valeur à votre portée actuelle. En d'autres termes, il renverra la dernière valeur d'identité que vous avez créée explicitement, plutôt que toute identité créée par un déclencheur ou une fonction définie par l'utilisateur.

IDENT_CURRENT()

Renvoie la dernière valeur IDENTITY produite dans une table, quelles que soient la connexion et la portée de l'instruction qui a produit la valeur. IDENT_CURRENT est limité à une table spécifiée, mais pas par connexion ou étendue.