Domanda

Questa domanda ha già una risposta qui:

Sono insertnig in una tabella usando una selezione

INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'

dì che ho una colonna di identità in california_authors. Posso ottenere tutti gli ID inseriti dal particolare inserimento particolare proprio come posso ottenere @@ Identity per ultimo single insertion ?

Non posso usare il comando seleziona per california_authors Poiché potrebbe esistere record precedentemente inseriti con filtro State = 'CA'

È stato utile?

Soluzione

Puoi usare il produzione clausola.

Qualcosa del genere se la tua colonna di identità viene denominata "IdentityCol" restituirà il tuo ID come set di risultati.

INSERT california_authors (au_id, au_lname, au_fname)
OUTPUT inserted.IdentityCol
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'

Puoi inserire gli ID su una tabella utilizzando output ... into.
Ecco un campione che memorizza l'ID in una variabile della tabella.

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'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top