Kiểm tra @@TRANCOUNT trong cấu trúc TRY...CATCH
Chủ tài khoản 10 trúng bốc thăm và sẽ được thưởng $200. Bạn chuẩn bị một script đơn giản để cộng $200 đó vào current_balance của tài khoản 10. Bạn nghĩ mình đã viết đúng hết, nhưng vẫn muốn kiểm tra lại mã.
Thực tế, bạn đã mắc một lỗi nhỏ khi cộng tiền: SET current_balance = 'current_balance' + 200. Bạn đã viết 'current_balance' như một chuỗi, dẫn đến lỗi.
Script bạn tạo cần rollback mọi thay đổi nếu xảy ra lỗi, bằng cách kiểm tra xem có giao dịch đang mở hay không. Nếu mọi thứ chạy đúng, giao dịch cần được commit, cũng sau khi kiểm tra xem có giao dịch đang mở hay không.
Bài tập này là một phần của khóa học
Giao dịch và Xử lý lỗi trong SQL Server
Hướng dẫn bài tập
- Bắt đầu giao dịch.
- Sửa lỗi trong phép toán.
- Bên trong khối
TRY, kiểm tra xem có giao dịch hay không và commit. - Bên trong khối
CATCH, kiểm tra xem có giao dịch hay không và rollback.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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