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
Ö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