Maison > base de données > tutoriel mysql > Comment choisir la bonne fonction de récupération d'identité SQL Server : @@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT() ou OUTPUT ?

Comment choisir la bonne fonction de récupération d'identité SQL Server : @@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT() ou OUTPUT ?

DDD
Libérer: 2025-01-23 09:07:09
original
543 Les gens l'ont consulté

How to Choose the Right SQL Server Identity Retrieval Function: @@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT(), or OUTPUT?

Gestion des identités SQL Server : choisir la bonne fonction (@@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT(), OUTPUT)

De nombreuses applications de bases de données nécessitent un accès à l'ID des lignes nouvellement insérées, en particulier lorsqu'il s'agit de tables contenant des colonnes d'identité. SQL Server propose plusieurs façons d'y parvenir ; chaque méthode a des utilisations spécifiques et des inconvénients potentiels.

@@IDENTITY : récupération d'identité à l'échelle de la session

@@IDENTITY récupère la dernière valeur d'identité générée dans la session en cours, quelle que soit la table ou la portée. La prudence est de mise : @@IDENTITY peut renvoyer des valeurs provenant d'autres étendues (par exemple, un déclencheur), conduisant potentiellement à des résultats inexacts.

SCOPE_IDENTITY() : récupération d'identité spécifique à la portée

SCOPE_IDENTITY() fournit une approche plus précise, renvoyant la dernière valeur d'identité générée dans la session et la portée en cours (généralement la base de données actuelle). Sa fiabilité en fait la méthode privilégiée pour la plupart des scénarios. La portée peut être affinée davantage à l'aide de la syntaxe (n).

IDENT_CURRENT() : récupération d'identité spécifique à une table

IDENT_CURRENT('tableName') récupère la dernière valeur d'identité générée pour une table spécifiée, quelle que soit la session ou la portée. Ceci est utile lors de l'accès aux valeurs d'identité à partir d'une table non modifiée dans la session en cours ou lorsque @@IDENTITY et SCOPE_IDENTITY() ne conviennent pas.

Clause OUTPUT : récupération d'identité au niveau de l'instruction

La clause OUTPUT dans une instruction INSERT offre un moyen direct d'accéder aux ID des lignes insérées dans la portée de l'instruction. Contrairement à @@IDENTITY, cela évite les problèmes multi-portées. Cependant, cela nécessite l'utilisation de variables de table ou de tables temporaires pour stocker la sortie, ce qui augmente potentiellement la complexité et a un impact sur les performances. Surtout, c'est la seule méthode garantie pour récupérer des identités en exécution parallèle.

La sélection de la bonne méthode de récupération d'identité dépend des besoins spécifiques de l'application. Bien que SCOPE_IDENTITY() soit généralement recommandé, @@IDENTITY, IDENT_CURRENT() et la clause OUTPUT offrent des alternatives précieuses dans des contextes spécifiques.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal