SQL può inserire utilizzando selezionare Restituire più identità? [duplicare
-
12-11-2019 - |
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'
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'