Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Commit e rollback
martedì 28 aprile 2009 - 16.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Cyberking
Profilo
| Junior Member
79
messaggi | Data Invio:
mar 28 apr 2009 - 16:47
Ciao,
vorrei provare ad eseguire direttamente nell'editor di sql server express un update utilizzando il commit
da quello che ho letto dovrei fare così
BEGIN TRANSACTION
update miaTabella set campo='si'
where id=77206
commit
ed eseguo,
poi se se voglio tornare indietro
BEGIN TRANSACTION
update miaTabella set campo='si'
where id=77206
rollback
la prima mi funziona, la seconda mi da l'ok, ma il valore non torna come il precedente
cosa sto sbagliando?
http://www.trovashop.it
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 28 apr 2009 - 16:55
>BEGIN TRANSACTION
>update miaTabella set campo='si'
>where id=77206
>
>commit
>
>ed eseguo, poi se se voglio tornare indietro
...non puoi
Una volta che una transazione esplicita è stata resa persistente con il comando COMMIT TRAN si ritiene conclusa, quindi non puoi più recuperare il valore precedente.
COMMIT TRAN e ROLLBACK TRAN sono mutualmente esclusive e possono essere utilizzate per confermare o annullare una transazione esplicita.
>BEGIN TRANSACTION
>update miaTabella set campo='si'
>where id=77206
>
>rollback
>
>la prima mi funziona, la seconda mi da l'ok, ma il valore non
>torna come il precedente
Certo, la seconda transazione è completamente isolata dalla precedente: tu non fai altro che eseguire una UPDATE (casualmente sulla stessa riga e con lo stesso valore della colonna) ed annulli l'operazione con una ROLLBACK TRAN... riottenendo il valore della precedente transazione (che casualmente coincide
).
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Cyberking
Profilo
| Junior Member
79
messaggi | Data Invio:
mar 28 apr 2009 - 17:05
Allora non ho capito come funziona il rollback
avevo capito che così potevo lanciare un update, e poter tornare indietro nel caso che non fosse giusta l'operazione eseguita
mi sai indicare come è possibile farlo?
http://www.trovashop.it
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 28 apr 2009 - 17:07
>Allora non ho capito come funziona il rollback
>
>avevo capito che così potevo lanciare un update, e poter tornare
>indietro nel caso che non fosse giusta l'operazione eseguita
Esatto IN UNA SOLA TRANSAZIONE, non in 2 come nel tuo esempio
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Cyberking
Profilo
| Junior Member
79
messaggi | Data Invio:
mar 28 apr 2009 - 17:27
no scusa,
allora non sono stato chiaro
prima sto lanciando la prima query dove metto sotto il commit
poi se non va bene o per verificare s emi torna indietro
lancio la stessa con la scritta sotto rollback
http://www.trovashop.it
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 28 apr 2009 - 22:43
>no scusa,
>allora non sono stato chiaro
No, lo sei stato
>prima sto lanciando la prima query dove metto sotto il commit
>
>poi se non va bene o per verificare s emi torna indietro
>lancio la stessa con la scritta sotto rollback
E ti ripeto, SI TRATTA DI DUE TRANSAZIONI ESPLICITE DISTINTE, QUINDI IL ROLLBACK HA EFFETTO SOLO SULLA SECONDA!!!
E' chiaro ora?
Inizia a leggere questo paragrafo dei Books Online ed approfondisci il discorso con quelli correlati:
http://msdn.microsoft.com/it-it/library/ms190612.aspx
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !