Conosci la clausola OUTPUT?
A partire da SQL Server 2005, è possibile utilizzare la clausola OUTPUT per poter leggere informazioni sulle righe interessate da operazioni DML (insert, update, delete).
Un esempio di utilizzo potrebbe essere questo…
Supponiamo di avere una tabella, con una colonna autoincrementante, che subisce un inserimento simultaneo di più righe.
Qualcosa come:
set nocount on
use tempdb
go
create table importDati
(
idRecord int primary key identity(1,1),
valore int
)
go
insert importDati
select 11 union all
select 22 union all
select 33 union all
select 44 union all
select 55
La mia necessità è quella di conoscere gli “idRecord” generati automaticamente per poterli utilizzare fare altro.
Con la clasuola OUTPUT potrei fare semplicemente qualcosa del genere:
create table #t (idRecord int)
insert importDati
output inserted.idRecord into #t
select 11 union all
select 22 union all
select 33 union all
select 44 union all
select 55
select * from #t
Qualcuno ha usato i trigger per risolvere questo tipo di problematiche?
Oppure: qualcuno ha usato i cursori? :-)