Insert e delete

martedì 03 ottobre 2006 - 10.50

nandonando Profilo | Senior Member

E' possibile fare un Insert e Delete contemporaneamente con un unica query?grazie

lbenaglia Profilo | Guru

>E' possibile fare un Insert e Delete contemporaneamente con un
>unica query?

Ciao nandonando,

a prescindere dal DBMS che utilizzi (ma che non menzioni) bisogna capire cosa intendi con "contemporaneamente".
INSERT e DELETE sono due comandi SQL distinti, quindi in una stessa connessione potranno essere eseguiti in sequenza.
Se ti riferisci all'esecuzione simultanea da parte di connessioni parallele, allora la risposta alla tua domanda è "è possibile", nel senso che dipende da come il DBMS gestisce i locks su una stessa risorsa.
Nel caso in cui il lock manager sia in grado di gestire locks a livello di riga/pagina allora le due operazioni possono essere eseguite in modo concorrente, l'importante è che agiscano su righe/pagine distinte; diversamente se il lock scala a livello di tabella, le query verranno implicitamente eseguite in un determinato ordine.
Il discorso è molto più complesso dato che le variabili in gioco sono diverse(isolation level, transazioni, ecc.) quindi ti invito ad approfondire il discorso sulla documentazione del tuo DBMS.

> grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

nandonando Profilo | Senior Member

In pratica recupero un record con l'id da una tabella che deve essere cancellato e successivamente deve essere inserito in un altra(o viceversa cioè prima insert e poi delete che è più sicuro) tutto questo per velocizzare la procedura

lbenaglia Profilo | Guru

>In pratica recupero un record con l'id da una tabella che deve
>essere cancellato e successivamente deve essere inserito in un
>altra(o viceversa cioè prima insert e poi delete che è più sicuro)
>tutto questo per velocizzare la procedura

Ed il problema dove sarebbe?
L'unica accortezza è racchiudere le due operazioni in una transazione esplicita nel caso in cui debba essere garantita l'integrità logica dell'operazione.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

nandonando Profilo | Senior Member

esattamente e come di fa a racchiudere in una parentesi?

lbenaglia Profilo | Guru

>esattamente e come di fa a racchiudere in una parentesi?
Cos'è "una parentesi"?!
Non ci hai ancora detto che DBMS stai utilizzando...

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

nandonando Profilo | Senior Member

uso sql server
se non ho capito male inserisco le 2 istruzioni tra parentesi ed uso una sola connection giusto?
scusate
http://www.mapnet.it/Fattori-arcani/Fattori-arcani.htm

lbenaglia Profilo | Guru

>uso sql server
>se non ho capito male inserisco le 2 istruzioni tra parentesi
>ed uso una sola connection giusto?
No.

Devi fare:

BEGIN TRANSACTION

INSERT...
DELETE...

COMMIT TRANSACTION

Se hai altri dubbi consulta i Books Online.

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5