Maison >base de données >tutoriel mysql >Comment récupérer les valeurs d'identité nouvellement générées dans 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!