Memeriksa @@TRANCOUNT dalam konstruksi TRY...CATCH
Pemilik akun 10 memenangkan undian dan akan menerima $200. Anda menyiapkan skrip sederhana untuk menambahkan $200 tersebut ke current_balance akun 10. Anda merasa sudah menulis semuanya dengan benar, tetapi Anda memilih untuk memeriksa kode Anda.
Ternyata, Anda membuat kesalahan sepele saat menambahkan uang: SET current_balance = 'current_balance' + 200. Anda menulis 'current_balance' sebagai string, yang memicu galat.
Skrip yang Anda buat harus melakukan rollback setiap perubahan jika terjadi galat, dengan memeriksa apakah ada transaksi yang sedang terbuka. Jika semuanya berjalan dengan benar, transaksi harus di-commit, juga dengan memeriksa apakah ada transaksi yang sedang terbuka.
Latihan ini adalah bagian dari kursus
Transaksi dan Penanganan Kesalahan di SQL Server
Petunjuk latihan
- Mulai transaksi.
- Perbaiki kesalahan dalam operasi tersebut.
- Di dalam blok
TRY, periksa apakah ada transaksi dan lakukan commit. - Di dalam blok
CATCH, periksa apakah ada transaksi dan lakukan rollback.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
BEGIN TRY
-- Begin the transaction
___ ___;
-- Correct the mistake
UPDATE accounts SET current_balance = 'current_balance' + 200
WHERE account_id = 10;
-- Check if there is a transaction
IF ___ > 0
-- Commit the transaction
___ ___;
SELECT * FROM accounts
WHERE account_id = 10;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Check if there is a transaction
IF ___ > 0
-- Rollback the transaction
___ ___;
END CATCH