>vorrei poter inserire, aggiornare e cancellare dei record da
>una tabella in base ad un array.
>Vorrei evitare di cancellare e riscrivere tutti i record ogni
>volta o utilizzare tabelle temporanee visto che la devo ripetere
>spesso e su record un po' più complicati.
Ciao,
prova a dare un'occhiata a questo esempio:
USE tempdb;
GO
CREATE TABLE #SquadreGiocatori (
ID int IDENTITY(1, 1) PRIMARY KEY
, idSquadra int
, idGiocatore int
, Data datetime
);
GO
INSERT INTO #SquadreGiocatori (idSquadra, idGiocatore, Data)
VALUES
(1, 1, '20121212'),
(1, 12, '20121212'),
(1, 23, '20121212'),
(1, 54, '20121212'),
(1, 67, '20121212');
GO
CREATE TABLE #InputArrayTable (
idSquadra int
, idGiocatore int
, Data datetime
);
INSERT INTO #InputArrayTable (idSquadra, idGiocatore, Data)
VALUES
(1, 1, '20140101'),
(1, 23, '20140101'),
(1, 54, '20140101'),
(1, 88, '20140101');
MERGE #SquadreGiocatori TARG
USING #InputArrayTable SRC
ON SRC.idGiocatore = TARG.idGiocatore
WHEN MATCHED THEN
UPDATE
SET Data = SRC.Data
WHEN NOT MATCHED BY TARGET THEN
INSERT (idSquadra, idGiocatore, Data)
VALUES (SRC.idSquadra, SRC.idGiocatore, SRC.Data)
WHEN NOT MATCHED BY SOURCE THEN
DELETE;
SELECT * FROM #SquadreGiocatori;
DROP TABLE #InputArrayTable;
GO
DROP TABLE #SquadreGiocatori;
GO
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi