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

Quelle est la différence entre Scope_Identity(), Identity(), @@Identity et Ident_Current() ?

  • Le @@identity renvoie la dernière identité créée dans la même session.
  • Le scope_identity() renvoie la dernière identité créée dans la même session et la même portée.
  • Le ident_current(name) renvoie la dernière identité créée pour une table ou une vue spécifique dans n'importe quelle session.
  • L'identity() la fonction n'est pas utilisée pour obtenir une identité, elle est utilisée pour créer une identité dans un select...into requête.

La session est la connexion à la base de données. La portée est la requête en cours ou la procédure stockée en cours.

Une situation où le scope_identity() et le @@identity les fonctions diffèrent, c'est si vous avez un déclencheur sur la table. Si vous avez une requête qui insère un enregistrement, provoquant l'insertion d'un autre enregistrement quelque part par le déclencheur, le scope_identity() renverra l'identité créée par la requête, tandis que la fonction @@identity renverra l'identité créée par le déclencheur.

Donc, normalement, vous utiliseriez le scope_identity() fonction.