Eseguire il rollback di una transazione in caso di errore
Il tuo primo giorno di lavoro ti è stato affidato il compito di impostare le transazioni che registrano i trasferimenti di denaro nella tua banca.
Vuoi preparare un semplice script in cui 100 $ vengano trasferiti da account_id = 1 a account_id = 5. Dopo di che, registrerà quei movimenti nella tabella transactions. Pensi di aver scritto tutto correttamente, ma, da persona prudente, preferisci ricontrollare!
In realtà, hai commesso un errore. Invece di inserire una nuova transazione per il conto 5, l'hai inserita per il conto 500, che non esiste.
Per prevenire errori futuri, lo script che crei deve eseguire un rollback di ogni modifica se si verifica un errore. Se invece va tutto a buon fine, la transazione deve essere confermata (committed).
Questo esercizio fa parte del corso
Transazioni e gestione degli errori in SQL Server
Istruzioni dell'esercizio
- Avvia la transazione.
- Correggi l'errore nell'operazione.
- Conferma (commit) la transazione se non ci sono errori.
- All'interno del blocco
CATCH, esegui il rollback della transazione.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
BEGIN TRY
-- Begin the transaction
BEGIN ___;
UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
INSERT INTO transactions VALUES (1, -100, GETDATE());
UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
-- Correct it
INSERT INTO transactions VALUES (500, 100, GETDATE());
-- Commit the transaction
___ TRAN;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Rollback the transaction
___ ___;
END CATCH