peut-SQL insert à l'aide de select retour des identités multiples?[dupliquer]
-
12-11-2019 - |
Question
Cette question a déjà une réponse ici:
Je suis insertnig dans une table à l'aide d'une sélection
INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'
dire que j'ai une colonne d'identité en california_authors
.Puis-je obtenir tous les id inséré par le particulier au-dessus de l'insertion, tout comme je peux obtenir de l' @@IDENTITY pour la dernière single insertion
?
Je ne peux pas utiliser la commande select pour california_authors
comme il peut y existe déjà enregistrements insérés avec filtre State = 'CA'
La solution
Vous pouvez utiliser l' sortie la clause.
Quelque chose comme ceci si votre colonne d'identité est nommé "IdentityCol' sera de retour que vous identifiant comme un ensemble de résultats.
INSERT california_authors (au_id, au_lname, au_fname)
OUTPUT inserted.IdentityCol
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'
Vous pouvez insérer l'id d'une table à l'aide de output ... into
.
Voici un exemple qui stocke l'id dans une variable de table.
declare @IDs table (id int)
INSERT california_authors (au_id, au_lname, au_fname)
OUTPUT inserted.IdentityCol INTO @IDs
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'