Fonctions d'identité SQL Server : une comparaison détaillée
@@IDENTITY
, SCOPE_IDENTITY()
, IDENT_CURRENT()
et IDENTITY()
sont tous liés à la récupération de valeurs à partir de colonnes d'identité dans SQL Server, mais leur portée et leur application diffèrent considérablement.
Comprendre la portée des fonctions d'identité SQL Server
« Portée » fait référence au contexte dans lequel la valeur d'identité est générée. Cela peut être :
Répartition des fonctions
@@IDENTITY
: Renvoie la dernière valeur d'identité générée dans la session en cours, quelle que soit la portée (requête, procédure stockée ou déclencheur).
SCOPE_IDENTITY()
: Renvoie la dernière valeur d'identité générée dans la session et portée actuelles. C'est la fonction la plus couramment recommandée car elle fournit des résultats plus précis.
IDENT_CURRENT('table_name')
: Renvoie la dernière valeur d'identité générée pour une table spécifique, quelle que soit la session ou la portée. Ceci est utile lorsque vous avez besoin de la dernière valeur d'identité pour une table particulière dans différentes sessions ou contextes.
IDENTITY()
: Ceci n'est pas utilisé pour récupérer les valeurs d'identité. C'est un mot-clé utilisé pour définir une colonne d'identité lors de la création d'une table en utilisant la syntaxe SELECT ... INTO
.
Scénarios illustratifs
Examinons différents scénarios pour mettre en évidence les différences :
Instruction INSERT
unique : Si une seule instruction INSERT
ajoute une ligne, SCOPE_IDENTITY()
et @@IDENTITY
renverront la même valeur.
Insertion basée sur un déclencheur : Si un déclencheur insère une ligne dans une deuxième table après un INSERT
dans la première table, SCOPE_IDENTITY()
renverra l'identité de la table directement affectée par l'instruction actuelle (la première table), tandis que @@IDENTITY
renverra l'identité de la table affectée en dernier dans la session (qui pourrait être la deuxième table).
Choisir la bonne fonction
Dans la plupart des cas, SCOPE_IDENTITY()
est préféré car il fournit des résultats spécifiques au contexte. @@IDENTITY
est utile lorsque vous avez besoin de la valeur d'identité la plus récente, quelle que soit son origine au sein de la session. IDENT_CURRENT()
est crucial lorsque vous avez besoin de la dernière valeur d'identité pour une table particulière, quelle que soit la session en cours. N'oubliez pas que IDENTITY()
sert à définir les colonnes d'identité, et non à récupérer leurs valeurs.
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!