Verificare @@TRANCOUNT in una struttura TRY...CATCH
Il titolare del conto 10 ha vinto una lotteria e riceverà 200 \(. Prepara uno script semplice per aggiungere quei 200 \) al current_balance del conto 10. Pensi di aver scritto tutto correttamente, ma preferisci ricontrollare il codice.
In realtà hai fatto un errore banale nell’aggiungere il denaro: SET current_balance = 'current_balance' + 200. Hai scritto 'current_balance' come stringa, il che genera un errore.
Lo script che crei deve eseguire il rollback di ogni modifica se si verifica un errore, controllando se c’è una transazione aperta. Se invece va tutto a buon fine, la transazione deve essere eseguita con commit, sempre verificando se c’è una transazione aperta.
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.
- All’interno del blocco
TRY, verifica se c’è una transazione ed esegui il commit. - All’interno del blocco
CATCH, verifica se c’è una transazione ed esegui il rollback.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
BEGIN TRY
-- Begin the transaction
___ ___;
-- Correct the mistake
UPDATE accounts SET current_balance = 'current_balance' + 200
WHERE account_id = 10;
-- Check if there is a transaction
IF ___ > 0
-- Commit the transaction
___ ___;
SELECT * FROM accounts
WHERE account_id = 10;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Check if there is a transaction
IF ___ > 0
-- Rollback the transaction
___ ___;
END CATCH