Inserimento di righe con l'istruzione SELECT INTO
In questo articolo vedremo come si possono inserire dei record presi da un'altra tabella. Vedremo anche come fare nella maniera più opportuna le commit e le rollback sui nostri inserimenti.
Vedremo tutto con un esempio pratico che spero sia il più esaustivo possibile:
use MyDB;
go
begin try
begin tran insertMyTable
with mark 'insertMyTable'
INSERT INTO dbo.MyDestTable
(ID, Code, Active)
SELECT src.ID, src.Code,
CASE
WHEN src.Active IS NULL THEN 0
ELSE src.Active
END
FROM dbo.MySourceTable src;
commit tran insertMyTable;
end try
begin catch
rollback tran insertMyTable;
end catch
Andando un po' fuori tema vorrei appuntare qui una query che ho trovato molto utile in molte situazioni:
SELECT ROW_NUMBER( ) OVER ( ORDER BY src.code ASC ) as ID,
src.Code,
src.Description
FROM dbo.MyTable src;
E' un modo semplice per generare degli ID univoci a partire dal ROW_NUMBER (che è l'indice di riga assegnato dal DB in maniera implicita).
Buon lavoro!