Aan de slagGa gratis aan de slag

@@TRANCOUNT controleren in een TRY...CATCH-constructie

De eigenaar van rekening 10 heeft een loterij gewonnen en krijgt $200. Je bereidt een eenvoudig script voor om die $200 toe te voegen aan de current_balance van rekening 10. Je denkt dat je alles goed hebt geschreven, maar je controleert je code toch liever.

Eigenlijk heb je een stomme fout gemaakt bij het toevoegen van het geld: SET current_balance = 'current_balance' + 200. Je hebt 'current_balance' als string geschreven, wat een fout veroorzaakt.

Het script dat je maakt moet alle wijzigingen terugdraaien (rollback) als er een fout optreedt, waarbij je controleert of er een open transactie is. Als alles goed gaat, moet de transactie worden vastgelegd (commit), ook nadat je hebt gecontroleerd of er een open transactie is.

Deze oefening maakt deel uit van de cursus

Transacties en foutafhandeling in SQL Server

Cursus bekijken

Oefeninstructies

  • Start de transactie.
  • Corrigeer de fout in de bewerking.
  • Controleer binnen het TRY-blok of er een transactie is en bevestig (commit) deze.
  • Controleer binnen het CATCH-blok of er een transactie is en draai deze terug (rollback).

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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
Code bewerken en uitvoeren