XACT_ABORT e THROW
I clienti più facoltosi della banca in cui lavori hanno deciso di donare lo 0,01% del loro current_balance a un'organizzazione non profit. Devi preparare lo script per aggiornare i conti dei clienti, ma solo per quelli con un current_balance superiore a $5.000.000. La direttrice della banca ti dice che, se non ci sono almeno 10 clienti facoltosi, non devi eseguire questa operazione, perché vuole intervistare altri clienti.
Prepari uno script e, tra le varie opzioni, decidi di usare XACT_ABORT in combinazione con THROW. In questo modo, se il numero di righe interessate è minore o uguale a 10, puoi generare un errore così che la transazione venga annullata.
Questo esercizio fa parte del corso
Transazioni e gestione degli errori in SQL Server
Istruzioni dell'esercizio
- Usa l'impostazione appropriata di
XACT_ABORT. - Avvia la transazione.
- Se il numero di righe interessate è minore o uguale a 10, genera l'errore usando l'istruzione
THROW, con numero 55000. - Esegui il commit della transazione se il numero di righe interessate è maggiore di 10.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
-- 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
___ ___;