@@TRANCOUNT in einem TRY...CATCH-Konstrukt prüfen
Der Inhaber des Kontos 10 hat bei einer Verlosung gewonnen und erhält 200 \(. Du bereitest ein einfaches Skript vor, um diese 200 \) zum current_balance von Konto 10 hinzuzufügen. Du denkst, du hast alles richtig geschrieben, möchtest deinen Code aber lieber noch prüfen.
Tatsächlich ist dir beim Hinzufügen des Geldes ein dummer Fehler passiert: SET current_balance = 'current_balance' + 200. Du hast 'current_balance' als String geschrieben, was einen Fehler erzeugt.
Das Skript, das du erstellst, soll bei einem Fehler alle Änderungen zurückrollen und dabei prüfen, ob eine offene Transaktion vorhanden ist. Wenn alles korrekt läuft, soll die Transaktion bestätigt werden, ebenfalls erst nachdem geprüft wurde, ob eine offene Transaktion vorhanden ist.
Diese Übung ist Teil des Kurses
Transaktionen und Fehlerbehandlung in SQL Server
Anleitung zur Übung
- Beginne die Transaktion.
- Korrigiere den Fehler in der Operation.
- Prüfe im
TRY-Block, ob eine Transaktion aktiv ist, und führe einen Commit durch. - Prüfe im
CATCH-Block, ob eine Transaktion aktiv ist, und rolle sie zurück.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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