Accès à l'ID de la ligne la plus récemment ajoutée dans SQL
Après avoir inséré de nouvelles données dans une table de base de données, vous devez souvent récupérer l'ID généré automatiquement de la nouvelle ligne. Cet article présente plusieurs méthodes SQL pour obtenir cet identifiant, évitant ainsi le besoin de tables temporaires.
SCOPE_IDENTITY()
Pour les tables avec une colonne INT
ou BIGINT
définie comme colonne d'identité, SCOPE_IDENTITY()
récupère efficacement l'ID suite à une instruction INSERT
. Voici comment :
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT SCOPE_IDENTITY()</code>
Cela renvoie la valeur d'identité la plus récemment insérée dans la portée actuelle (qui peut être affectée par les transactions imbriquées).
@@IDENTITÉ
@@IDENTITY
est une variable globale contenant la dernière valeur d'identité attribuée. Utilisez-le comme ceci :
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT @@IDENTITY</code>
Cependant, @@IDENTITY
reflète la dernière valeur d'identité dans toutes les étendues, y compris potentiellement les insertions antérieures dans les transactions imbriquées. Cela pourrait donner des résultats incorrects si plusieurs insertions ont eu lieu au cours de la même session.
IDENT_CURRENT()
IDENT_CURRENT()
propose une autre option. Il récupère la valeur d'identité d'une table spécifique, quelle que soit la portée ou la transaction :
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT IDENT_CURRENT('dbo.YourTable')</code>
IDENT_CURRENT()
garantit que l'ID provient de la table spécifiée, même avec plusieurs insertions dans des transactions imbriquées.
Résumé
Les développeurs de bases de données doivent comprendre ces différentes méthodes pour récupérer le dernier ID de ligne inséré. Choisir la bonne méthode, en fonction de la structure de votre table et du contexte de vos opérations, garantit une récupération précise des identifiants et maintient l'intégrité des donné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!