Hai bảng diem(id_sv, mon, so_diem) và thong_ke(id_sv, so_mon).
Hãy tạo trigger trg_dem_mon kiểu AFTER INSERT trên diem: với mỗi sinh viên xuất hiện trong lô dữ liệu vừa chèn, cộng thêm vào thong_ke.so_mon đúng số môn mà sinh viên đó vừa được chèn.
Lưu ý: trigger trong SQL Server chỉ chạy một lần cho cả lô, không phải mỗi dòng một lần — nên phải gom nhóm bảng inserted trước khi cập nhật.
Sau đó chèn một lệnh INSERT gồm 4 dòng: (1,N'Toan',8), (1,N'Ly',7), (1,N'Hoa',9), (2,N'Toan',6), rồi in id_sv và so_mon sắp xếp theo id_sv.
Hai bảng đã được tạo sẵn. diem: id_sv INT, mon NVARCHAR(30), so_diem INT. thong_ke: id_sv INT, so_mon INT. Bảng thong_ke luôn có sẵn dòng cho sinh viên 1 và 2.
Số dòng ≤1000.
Mỗi dòng gồm id_sv và so_mon, cách nhau bởi TAB.
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. Nếu viết UPDATE ... SET so_mon = so_mon + 1 FROM inserted thì sinh viên 1 chỉ được cộng 1 thay vì 3 — đó chính là lỗi bài này muốn bạn tránh.
Ví dụ:
Đầu vào:
CREATE TABLE diem(id_sv INT, mon NVARCHAR(30), so_diem INT);
CREATE TABLE thong_ke(id_sv INT, so_mon INT);
INSERT INTO thong_ke(id_sv,so_mon) VALUES (1,0),(2,0);
Đầu ra:
1 3
2 1
Đang tải editor...