XACT_ABORT dan THROW
Para nasabah terkaya di bank tempat Anda bekerja memutuskan untuk menyumbangkan 0,01% dari current_balance mereka kepada sebuah organisasi nirlaba. Anda bertugas menyiapkan skrip untuk memperbarui rekening nasabah, tetapi Anda harus melakukannya hanya untuk rekening dengan current_balance lebih dari $5.000.000. Direktur bank memberi tahu Anda bahwa jika tidak ada setidaknya 10 nasabah kaya, Anda tidak boleh melakukan operasi ini, karena ia ingin mewawancarai lebih banyak nasabah.
Anda menyiapkan sebuah skrip, dan dari berbagai cara yang ada, Anda memutuskan untuk menggunakan XACT_ABORT bersama dengan THROW. Dengan cara ini, jika jumlah baris yang terpengaruh kurang dari atau sama dengan 10, Anda dapat melemparkan error sehingga transaksinya di-rollback.
Latihan ini adalah bagian dari kursus
Transaksi dan Penanganan Kesalahan di SQL Server
Petunjuk latihan
- Gunakan pengaturan
XACT_ABORTyang sesuai. - Mulai transaksinya.
- Jika jumlah baris yang terpengaruh kurang dari atau sama dengan 10, lempar error menggunakan pernyataan
THROWdengan nomor 55000. - Commit transaksinya jika jumlah baris yang terpengaruh lebih dari 10.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
-- 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
___ ___;