Ho una tabella con una sola colonna, che è un'identità generata automaticamenteinserire più righe di valori predefiniti in una tabella
create table SingleIdTable (
id int identity(1,1) not null
)
posso inserire una singola riga con un id generato automaticamente con:
insert into SingleIdTable default values
voglio inserire molte righe e utilizzare la sintassi di uscita per ottenere il loro iD, qualcosa di simile:
insert into SingleIdTable
output inserted.Id into @TableOfIds
select (default values) from SomeOtherTable where Attribute is null
Wher L'intenzione è di inserire una riga in SingleIdTable
per ogni riga in SomeOtherTable
dove Attribute
è null utilizzando un ID generato automaticamente. Quanto sopra non funziona, ma come potrei farlo. Prendo atto che se il mio tavolo avesse più di una singola colonna potrei farlo, ma non posso selezionare righe vuote che è quello che voglio veramente fare.
Non riesco a modificare la definizione di SomeOtherTable
.
+1 Mai pensato a MERGE – RichardTheKiwi
Astuzia ... Il tavolo un artefatto di qualcuno che ha mal applicato NHibernate durante la mappatura di un gruppo. Lo accetterò, ma ora mi rendo conto che potrei fare correlando la query interna con l'inserto in modo che possa 'output inserted.id, SomeOtherTable.id)'. È possibile? In realtà ho solo bisogno di abbinare il mio bag di id generati ciascuno con un elemento di 'SomeOtherTable' dove 'Attribute' è null. qualche idea? – silasdavis
@silasdavis - Sì, basta usare "OUTPUT INSERTED.id, T.id' –