Insert, Update, Delete da un array

giovedì 18 settembre 2014 - 01.10
Tag Elenco Tags  SQL Server 2008 R2  |  SQL Server 2008  |  SQL Server 2005  |  SQL Server 2000

gsistemi Profilo | Junior Member

vorrei poter inserire, aggiornare e cancellare dei record da una tabella in base ad un array.

Ho la tabella seguente:

ID | idSquadra | idGiocatore | Data
1 | 1 | 1 | 12/12/2012 12:12:12
2 | 1 | 12 | 12/12/2012 12:12:12
3 | 1 | 23 | 12/12/2012 12:12:12
4 | 1 | 54 | 12/12/2012 12:12:12
5 | 1 | 67 | 12/12/2012 12:12:12

e questo array:

1, 23, 54, 88

Vorrei che la tabella diventasse così:

ID | idSquadra | idGiocatore | Data
1 | 1 | 1 | 01/01/2014 00:12:55
3 | 1 | 23 | 01/01/2014 00:12:55
4 | 1 | 54 | 01/01/2014 00:12:55
5 | 1 | 88 | 01/01/2014 00:12:55

Quindi inserendo i nuovi record (ID 88), aggiornando quelli esistenti (ID 1, 23, 54) e cancellando (ID 12, 67) quelli che non esistono più in base all'ID dell'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.

alx_81 Profilo | Guru

>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
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5