Bảng taikhoan(id, so_du).
Hãy tạo trigger trg_chan_am kiểu AFTER UPDATE trên taikhoan: nếu sau khi cập nhật có bất kỳ tài khoản nào bị số dư âm, trigger phải ROLLBACK TRANSACTION để huỷ toàn bộ lệnh cập nhật đó.
Sau đó chạy đoạn sau và in id, so_du của tất cả tài khoản sắp xếp theo id:
BEGIN TRY
UPDATE taikhoan SET so_du = so_du - 500;
END TRY
BEGIN CATCH
END CATCH
Bảng taikhoan đã được tạo sẵn. Cột: id INT, so_du INT.
Số tài khoản ≤1000.
Mỗi dòng gồm id và so_du, cách nhau bởi TAB. Nếu lệnh cập nhật bị huỷ thì số dư giữ nguyên như ban đầu.
Bài làm phải bắt đầu bằng một dòng GO — SQL Server yêu cầu CREATE TRIGGER là lệnh đầu tiên của một batch. ROLLBACK trong trigger sẽ sinh lỗi ở lệnh gọi — vì vậy đề đã bọc sẵn TRY ... CATCH.
Ví dụ:
Đầu vào:
CREATE TABLE taikhoan(id INT, so_du INT);
INSERT INTO taikhoan(id,so_du) VALUES (1,1000),(2,300);
Đầu ra:
1 1000
2 300
Đang tải editor...