Återställa en transaktion vid fel
Din första arbetsdag och du har fått i uppgift att sätta upp transaktioner som registrerar penningöverföringar i banken.
Du vill skapa ett enkelt skript där 100 dollar överförs från account_id = 1 till account_id = 5. Därefter ska rörelserna registreras i tabellen transactions. Du tror att allt är korrekt skrivet, men som den noggranne person du är vill du dubbelkolla!
Det visar sig att du faktiskt gjort ett misstag. I stället för att infoga en ny transaktion för konto 5 gjorde du det för konto 500, som inte finns.
För att förhindra liknande fel i framtiden ska skriptet du skapar återställa alla ändringar om ett fel uppstår. Om allt går rätt ska transaktionen bekräftas.
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.
- Bekräfta transaktionen om inga fel uppstår.
- Inuti
CATCH-blocket återställer du transaktionen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
BEGIN TRY
-- Begin the transaction
BEGIN ___;
UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
INSERT INTO transactions VALUES (1, -100, GETDATE());
UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
-- Correct it
INSERT INTO transactions VALUES (500, 100, GETDATE());
-- Commit the transaction
___ TRAN;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Rollback the transaction
___ ___;
END CATCH