Dans la programmation de bases de données, la récupération de la valeur d'un champ d'identité de clé primaire après une opération d'insertion est cruciale. Cet article examine diverses méthodes à cet effet et donne un aperçu de leur fonctionnalité et de leur adéquation à différents scénarios.
@@IDENTITY récupère la dernière valeur d'identité générée dans la session en cours, indépendamment de la table associée à l'identité.
declare @t table ( id int identity primary key, somecol datetime default getdate() ) insert into @t default values select @@IDENTITY --returns 1
L'inconvénient de @@IDENTITY est qu'il n'est pas limité à la portée. Par conséquent, il peut renvoyer la dernière valeur d'identité générée par n'importe quelle instruction de la session, y compris celles en dehors de la transaction en cours.
SCOPE_IDENTITY() récupère la dernière valeur d'identité générée dans la portée actuelle, qui est limitée à l'instruction et à la transaction qui l'ont produite.
select SCOPE_IDENTITY() --returns 1
SCOPE_IDENTITY() est une méthode plus précise par rapport à @@IDENTITY car elle garantit que la valeur d'identité renvoyée est spécifique à la portée actuelle.
L'utilisation de la clause OUTPUT avec une instruction insert vous permet de renvoyer une table contenant les lignes insérées, y compris les valeurs d'identité générées.
Create Table #Testing ( id int identity, somedate datetime default getdate() ) insert into #Testing output inserted.* default values
OUTPUT fournit un moyen pratique de récupérer plusieurs valeurs d'identité à la fois au sein d'une seule transaction. Cependant, elle est spécifique à la table ciblée et nécessite des opérations supplémentaires de création et de nettoyage de table.
Le choix de la méthode de récupération de la dernière valeur d'identité dépend des exigences spécifiques de l'application.
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!