Maison >base de données >tutoriel mysql >Comment récupérer les valeurs d'identité nouvellement générées dans SQL Server ?

Comment récupérer les valeurs d'identité nouvellement générées dans SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-23 09:03:11704parcourir

How to Retrieve Newly Generated Identity Values in SQL Server?

Méthodes de récupération des valeurs d'identité SQL Server : un guide complet

Lorsque vous travaillez avec des tables SQL Server contenant des colonnes d'identité, il est crucial de récupérer la valeur d'identité nouvellement générée après une opération d'insertion. Ce guide explore les différentes fonctions et techniques disponibles à cet effet : @@IDENTITY, IDENT_CURRENT, SCOPE_IDENTITY() et la clause OUTPUT.

Comprendre les options

Chaque méthode offre un niveau différent de portée et de fiabilité :

  • @@IDENTITY : Cette fonction renvoie la dernière valeur d'identité générée dans la session en cours, quelle que soit la table ou l'instruction spécifique. Bien que simple à utiliser, sa large portée le rend vulnérable aux erreurs si plusieurs insertions se produisent au cours de la même session. À utiliser avec prudence.

  • IDENT_CURRENT('tableName') : Cette fonction cible spécifiquement une table donnée (tableName), en récupérant la dernière valeur d'identité générée pour cette table dans toutes les sessions et étendues. Il est moins fréquemment utilisé mais offre un degré de spécificité plus élevé que @@IDENTITY.

  • SCOPE_IDENTITY() : C'est généralement la méthode privilégiée. Il renvoie la dernière valeur d'identité générée dans la session en cours et la portée actuelle (généralement, le lot ou la procédure stockée en cours). Cela offre une meilleure isolation et précision par rapport à @@IDENTITY.

  • OUTPUT Clause : La clause OUTPUT, utilisée avec l'instruction INSERT, fournit un moyen puissant et fiable de capturer les valeurs d'identité de toutes les lignes insérées. Les lignes insérées sont écrites dans une table temporaire ou une variable de table, vous permettant d'interroger directement les valeurs d'identité. Ceci est particulièrement avantageux lorsqu’il s’agit de plans d’exécution parallèles. Cependant, notez que la clause OUTPUT exécute avant les déclencheurs, ce qui signifie qu'elle ne reflétera pas les valeurs d'identité générées par les déclencheurs.

Choisir la bonne méthode

Pour la plupart des scénarios, SCOPE_IDENTITY() offre le meilleur équilibre entre simplicité et fiabilité. @@IDENTITY doit être évité à moins que sa portée plus large ne soit explicitement requise. IDENT_CURRENT('tableName') fournit une approche plus spécifique lorsque cela est nécessaire, et la clause OUTPUT est précieuse pour sa robustesse, en particulier dans des scénarios complexes ou lorsque vous travaillez avec un traitement parallèle. Le choix dépend en fin de compte des exigences spécifiques de votre application et du potentiel d'opérations simultanées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn