Maison > base de données > tutoriel mysql > Comment choisir entre @@IDENTITY, SCOPE_IDENTITY() et OUTPUT pour récupérer les valeurs d'identité de clé primaire ?

Comment choisir entre @@IDENTITY, SCOPE_IDENTITY() et OUTPUT pour récupérer les valeurs d'identité de clé primaire ?

Mary-Kate Olsen
Libérer: 2025-01-03 04:12:38
original
438 Les gens l'ont consulté

How to Choose Between @@IDENTITY, SCOPE_IDENTITY(), and OUTPUT for Retrieving Primary Key Identity Values?

Récupération de la dernière identité : @@IDENTITY, SCOPE_IDENTITY(), OUTPUT et plus

Lors de la récupération des valeurs du champ d'identité de clé primaire après l'insertion, les développeurs emploient souvent diverses méthodes. Cet article examine les différences et la pertinence des méthodes @@IDENTITY, SCOPE_IDENTITY() et OUTPUT.

@@IDENTITY vs. SCOPE_IDENTITY()

@@IDENTITY renvoie la dernière valeur IDENTITY générée pour n'importe quelle table, quelle que soit la portée. Ce n'est pas sécurisé, ce qui signifie qu'il peut renvoyer des identités à partir d'insertions déclenchées ou d'autres instructions au sein de la session en cours.

SCOPE_IDENTITY() se comporte de la même manière, mais il limite la valeur renvoyée à l'instruction actuelle. et la portée de la connexion. Ainsi, il récupère uniquement les identités générées lors de l'exécution de l'instruction.

Méthode OUTPUT

La clause OUTPUT de l'instruction INSERT renvoie une table contenant les données insérées dans la table. Cela inclut les valeurs IDENTITY générées :

INSERT INTO #Testing (ID, somedate)
OUTPUT INSERTED.*
DEFAULT VALUES;
Copier après la connexion

Sélection de la méthode

La méthode appropriée dépend des exigences spécifiques :

  • @@IDENTITY : Convient pour récupérer la dernière identité générée dans toutes les tables du fichier actuel session.
  • SCOPE_IDENTITY() : Utile lorsque vous avez besoin de l'identité à partir de l'instruction et de la portée actuelles uniquement.
  • OUTPUT : Idéal pour récupérer non seulement l'identité mais aussi d'autres valeurs insérées.

Portée Sécurité

La méthode OUTPUT n'est pas explicitement sécurisée pour la portée. Il récupère les identités générées dans la portée actuelle, mais si ces identités ont été affectées à d'autres tables, il peut également les renvoyer. Pour une sécurité stricte de la portée, utilisez SCOPE_IDENTITY().

Notes supplémentaires

  • IDENT_CURRENT(table) : renvoie la valeur d'identité la plus récente générée pour une table spécifique, quelle que soit la connexion ou la portée. Cependant, il est principalement utilisé dans le code existant.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal