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'

Était-ce utile?

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'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top