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.
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.
Số tài khoản ≤1000.
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.
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
Đang tải editor...