IniziaInizia gratis

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

Visualizza il corso

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
Modifica ed esegui il codice