Kom igångKom igång gratis

Kontrollera @@TRANCOUNT i en TRY...CATCH-konstruktion

Ägaren av konto 10 har vunnit ett lotteri och tilldelas 200 dollar. Du förbereder ett enkelt skript för att lägga till dessa 200 dollar till current_balance för konto 10. Du tror att du har skrivit allt rätt, men vill ändå kontrollera koden.

Du gjorde faktiskt ett enkelt misstag när du lade till pengarna: SET current_balance = 'current_balance' + 200. Du skrev 'current_balance' som en sträng, vilket genererar ett fel.

Skriptet du skapar ska återställa alla ändringar om ett fel uppstår, och kontrollera om det finns en öppen transaktion. Om allt går rätt till ska transaktionen bekräftas – även då med en kontroll av om det finns en öppen transaktion.

Den här övningen är en del av kursen

Transaktioner och felhantering i SQL Server

Visa kurs

Övningsinstruktioner

  • Påbörja transaktionen.
  • Rätta till misstaget i operationen.
  • Inuti TRY-blocket kontrollerar du om det finns en transaktion och bekräftar den.
  • Inuti CATCH-blocket kontrollerar du om det finns en transaktion och återställer den.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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
Redigera och kör kod