Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution

    Đề bài: [SQL Server] Rollback khi gặp lỗi bằng TRY CATCH

    Bảng taikhoan(id, chu_tk, so_du).

    Trong khối BEGIN TRY, hãy mở transaction, cộng 100 vào tài khoản id = 1, rồi cố tình gây lỗi bằng phép chia cho 0, cuối cùng mới COMMIT. Trong khối BEGIN CATCH, nếu còn transaction đang mở (@@TRANCOUNT > 0) thì ROLLBACK và in ra một dòng DA ROLLBACK.

    Sau đó in id và so_du của tất cả tài khoản sắp xếp theo id — số dư phải giữ nguyên như ban đầu.

    • Định dạng đầu vào:

      Bảng taikhoan đã được tạo sẵn. Cột: id INT, chu_tk NVARCHAR(50), so_du INT. Luôn tồn tại tài khoản id = 1.

    • Ràng buộc đầu vào:

      Số tài khoản ≤1000\le 1000≤1000.

    • Định dạng đầu ra:

      Dòng đầu: DA ROLLBACK. Sau một dòng trống là danh sách id và so_du (cách nhau bởi TAB) giữ nguyên như ban đầu.

    Ghi chú:

    Gây lỗi bằng SELECT 1/0;. Luôn kiểm tra @@TRANCOUNT > 0 trước khi ROLLBACK để tránh lỗi "không có transaction nào để huỷ".

    Ví dụ:

    Đầu vào:

    CREATE TABLE taikhoan(id INT, chu_tk NVARCHAR(50), so_du INT);
    INSERT INTO taikhoan(id,chu_tk,so_du) VALUES (1,N'An',1000),(2,N'Binh',500);

    Đầu ra:

    
    DA ROLLBACK
    
    1	1000
    2	500

    Chủ đề

    🗄️ Cơ sở dữ liệuSQL ServerSQL Server: TransactionTất cả môn học

    Đang tải editor...