Membatalkan transaksi jika terjadi kesalahan
Pada hari pertama kerja, Anda mendapat tugas menyiapkan transaksi yang mencatat saat uang ditransfer di bank Anda.
Anda ingin menyiapkan skrip sederhana yang mentransfer $100 dari account_id = 1 ke account_id = 5. Setelah itu, skrip mendaftarkan perpindahan tersebut ke tabel transactions. Anda merasa sudah menulis semuanya dengan benar, tetapi sebagai pekerja yang berhati-hati, Anda lebih memilih untuk memeriksa semuanya!
Faktanya, Anda memang membuat kesalahan. Alih-alih menyisipkan transaksi baru untuk akun 5, Anda melakukannya untuk akun 500, yang tidak ada.
Untuk mencegah kesalahan di masa mendatang, skrip yang Anda buat harus melakukan rollback pada setiap perubahan jika terjadi kesalahan. Jika semuanya berjalan dengan benar, transaksi harus di-commit.
Latihan ini adalah bagian dari kursus
Transaksi dan Penanganan Kesalahan di SQL Server
Petunjuk latihan
- Mulai transaksi.
- Perbaiki kesalahan dalam operasi.
- Commit transaksi jika tidak ada kesalahan.
- Di dalam blok
CATCH, lakukan rollback transaksi.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
BEGIN TRY
-- Begin the transaction
BEGIN ___;
UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
INSERT INTO transactions VALUES (1, -100, GETDATE());
UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
-- Correct it
INSERT INTO transactions VALUES (500, 100, GETDATE());
-- Commit the transaction
___ TRAN;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Rollback the transaction
___ ___;
END CATCH