IniziaInizia gratis

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

Visualizza il corso

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