XACT_ABORT och THROW
Bankens förmögnaste kunder har beslutat att donera 0,01 % av sitt current_balance till en ideell organisation. Du har fått i uppdrag att förbereda skriptet för att uppdatera kundernas konton, men bara för de konton där current_balance överstiger 5 000 000 dollar. Bankdirektören meddelar att om det inte finns minst 10 förmögna kunder ska operationen inte genomföras, eftersom hon vill intervjua fler kunder.
Du förbereder ett skript och väljer bland flera möjliga lösningar att använda XACT_ABORT i kombination med THROW. På så sätt kan du, om antalet påverkade rader är 10 eller färre, utlösa ett fel så att transaktionen återställs.
Den här övningen är en del av kursen
Transaktioner och felhantering i SQL Server
Övningsinstruktioner
- Använd rätt inställning för
XACT_ABORT. - Påbörja transaktionen.
- Om antalet påverkade rader är 10 eller färre, utlös felet med hjälp av
THROW-satsen och numret 55000. - Genomför transaktionen om antalet påverkade rader är fler än 10.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- 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
___ ___;