Maison > base de données > tutoriel mysql > Comment récupérer des valeurs d'identité après l'insertion groupée d'enregistrements dans SQL Server sans curseurs ?

Comment récupérer des valeurs d'identité après l'insertion groupée d'enregistrements dans SQL Server sans curseurs ?

Patricia Arquette
Libérer: 2025-01-03 17:11:40
original
641 Les gens l'ont consulté

How to Retrieve Identity Values After Bulk Inserting Records in SQL Server without Cursors?

Insérer des enregistrements en bloc et récupérer des valeurs d'identité sans curseurs

L'insertion de plusieurs enregistrements dans une table est une tâche courante dans la programmation de bases de données. En particulier lors de la copie de données d'une table à une autre, il est souhaitable d'obtenir les valeurs d'identité générées pour les nouveaux enregistrements. À cet égard, Microsoft SQL Server 2005 fournit une solution efficace en utilisant la clause OUTPUT.

Considérant l'extrait de code fourni, où les données sont insérées de la table B dans la table A :

Create Table A (id int identity, Fname nvarchar(50), Lname nvarchar(50))
Create Table B (Fname nvarchar(50), Lname nvarchar(50), NewId int)
Insert into A(fname, lname)
SELECT fname, lname
FROM B
Copier après la connexion

Pour récupérer les valeurs d'identité des enregistrements nouvellement insérés dans le tableau A, nous pouvons utiliser la technique suivante :

Utiliser la SORTIE Clause

La clause OUTPUT nous permet de récupérer les valeurs générées lors d'une opération d'insertion, de mise à jour ou de suppression. Dans ce cas, nous pouvons l'utiliser pour capturer les valeurs d'identité des lignes insérées.

DECLARE @output TABLE (id int)

Insert into A (fname, lname)
OUTPUT inserted.ID INTO @output
SELECT fname, lname FROM B
Copier après la connexion

En créant une variable de table (@output) et en spécifiant l'expression OUTPUT insert.ID, nous demandons à la requête de renvoie les valeurs d'identité des enregistrements insérés dans @output.

Interrogation de la variable de table

Une fois l'opération d'insertion est terminé, nous pouvons interroger la variable de table @output pour obtenir les valeurs d'identité :

select * from @output
Copier après la connexion

Cela affichera une table avec une colonne (id) contenant les valeurs d'identité des enregistrements nouvellement insérés. Ces valeurs peuvent ensuite être utilisées pour mettre à jour les enregistrements correspondants dans le tableau B, si vous le souhaitez.

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