Conosci la clausola OUTPUT?

Published 20 febbraio 09 06.42 | abenedetti

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? :-)

Filed under: , , ,

Comments

No Comments

This Blog

Syndication