Entscheiden, wann eine Transaktion committed oder zurückgerollt wird
Die Bank, in der du arbeitest, hat beschlossen, Konten mit weniger als 5.000 \( jeweils 100 \) gutzuschreiben. Allerdings möchte der Bankdirektor das nur tun, wenn es nicht mehr als 200 Konten mit weniger als 5.000 $ gibt.
Du bereitest ein Skript vor, um diese 100 \( zu vergeben. Von den vielen Möglichkeiten entscheidest du dich, eine Transaktion zu öffnen und dann jedes Konto mit einem Kontostand von weniger als 5.000 \) zu aktualisieren. Danach prüfst du die Anzahl der von der Aktualisierung betroffenen Zeilen mit der Funktion @@ROWCOUNT. Ist diese Zahl größer als 200, rollst du die Transaktion zurück. Andernfalls führst du ein COMMIT durch.
Wie bereitest du das Skript vor?
Diese Übung ist Teil des Kurses
Transaktionen und Fehlerbehandlung in SQL Server
Anleitung zur Übung
- Starte die Transaktion.
- Prüfe, ob die Anzahl der betroffenen Zeilen größer als 200 ist.
- Rolle die Transaktion zurück, wenn die Anzahl der betroffenen Zeilen mehr als 200 beträgt.
- Führe ein COMMIT durch, wenn die Anzahl der betroffenen Zeilen kleiner oder gleich 200 ist.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END