XACT_ABORT und THROW
Die vermögendsten Kundinnen und Kunden der Bank, in der du arbeitest, haben beschlossen, 0,01 % ihres current_balance an eine Non-Profit-Organisation zu spenden. Du sollst das Skript vorbereiten, um die Konten zu aktualisieren, aber nur für diejenigen mit einem current_balance von mehr als 5.000.000 $. Die Direktorin der Bank sagt dir, dass du diese Operation nicht durchführen sollst, wenn es nicht mindestens 10 vermögende Kundinnen/Kunden gibt, da sie noch mehr Personen befragen möchte.
Du bereitest ein Skript vor und entscheidest dich – von mehreren möglichen Wegen – XACT_ABORT in Kombination mit THROW zu verwenden. So kannst du, falls die Anzahl der betroffenen Zeilen kleiner oder gleich 10 ist, einen Fehler auslösen, damit die Transaktion zurückgesetzt wird.
Diese Übung ist Teil des Kurses
Transaktionen und Fehlerbehandlung in SQL Server
Anleitung zur Übung
- Verwende die passende Einstellung für
XACT_ABORT. - Starte die Transaktion.
- Wenn die Anzahl der betroffenen Zeilen kleiner oder gleich 10 ist, löse den Fehler mit der Anweisung
THROWaus, und verwende dabei die Nummer 55000. - Bestätige die Transaktion (COMMIT), wenn die Anzahl der betroffenen Zeilen größer als 10 ist.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
-- Use the appropriate setting
SET XACT_ABORT ___;
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance - current_balance * 0.01 / 100
WHERE current_balance > 5000000;
IF @@ROWCOUNT <= 10
-- Throw the error
___ ___, 'Not enough wealthy customers!', 1;
ELSE
-- Commit the transaction
___ ___;