Hướng dẫn sử dụng Trigger trong SQL Server, chúng tôi sẽ hướng dẫn tạo trigger trên database quản lý bán hàng (QuanLyBanHang).

Database này gồm 09 bảng: NHACC, VATTU, DONDH, CTDONDH, PNHAP, CTPNHAP, PXUAT, CTPXUAT và TONKHO.

Trong bài học Trigger trong SQL Server 2014, chúng tôi cũng đề cập đến database QuanLyBanHang ở phần bài tập thực hành.

Và để thuận lợi cho các bạn khi làm theo bài hướng dẫn này, chúng tôi sẽ cung cấp cho các bạn file backup (QLBH.bak) của database này. Các bạn tải file này về và restore.

Hướng dẫn sử dụng Trigger trong SQL Server – Database diagram

hướng dẫn sử dụng trigger trong sql server

Hướng dẫn sử dụng Trigger trong SQL Server – Yêu cầu

Câu 1. Tạo trigger khi update hoặc insert cột SLNhap của bảng CTPNHAP thì tổng số lượng nhập <= tổng số lượng đặt của bảng CTDONDH.

Câu 2. Tạo trigger khi update cột SLNhap của bảng CTPNHAP thì cột TongSLN của bảng TONKHO được cập nhật theo.

Câu 3. Tạo trigger khi update hoặc insert dữ liệu của bảng TONKHO, cột SLCuoi được tính theo công thức SLCuoi = SLDau + TongSLN – TongSLX

Hướng dẫn sử dụng Trigger trong SQL Server – Hướng dẫn thực hiện

Câu 1. Tạo trigger khi update hoặc insert cột SLNhap của bảng CTPNHAP thì tổng số lượng nhập <= tổng số lượng đặt của bảng CTDONDH.

Giải thích: Nghĩa là tổng số lượng nhập của một vật tư tối đa bằng tổng số lượng đặt của vật tư đó. Điều này, ngăn chặn trường hợp tổng số lượng nhập cao hơn số lượng đặt.

Câu lệnh tạo trigger

Trigger sau khi tạo thành công

Câu 2. Tạo trigger khi update cột SLNhap của bảng CTPNHAP thì cột TongSLN của bảng TONKHO được cập nhật theo.

Giải thích: Khi chúng ta thay đổi số lượng nhập của một vật tư thì tổng số lượng nhập của vật tư đó sẽ là tổng số lượng nhập của bảng TONKHO. Lưu ý, chúng ta chỉ tính và cập nhật tổng số lượng nhập của những vật tư trong cùng tháng và cùng năm. Nghĩa là cùng vật tư nhưng khác tháng và khác năm sẽ không được tính.

Câu lệnh tạo trigger

Câu 3. Tạo trigger khi update hoặc insert dữ liệu của bảng TONKHO, cột SLCuoi được tính theo công thức SLCuoi = SLDau + TongSLN – TongSLX

Giải thích: Nghĩa là cột số lượng cuối được tính tự động dựa vào cột số lượng đầu, tổng số lượng nhập và tổng số lượng cuối.

Câu lệnh tạo trigger

Hướng dẫn sử dụng Trigger trong SQL Server – Kiểm tra trigger

Câu 1. Tạo trigger khi update hoặc insert cột SLNhap của bảng CTPNHAP thì tổng số lượng nhập <= tổng số lượng đặt của bảng CTDONDH.

Số lượng đặt của vật tư DD01 là 18

Tổng số lượng nhập của vật tư DD01 là 13, không vượt hơn số lượng đặt là 18

Khi thay đổi số lượng nhập của vật tư DD01 từ 5 thành 15 thì tổng số lượng nhập lúc này là 23 Do đó, tổng số lượng nhập cao hơn số lượng đặt trong bảng CTDONDH (23 > 18).

Trigger ngăn chặn không cho thay đổi số lượng nhập

Câu 2. Tạo trigger khi update cột SLNhap của bảng CTPNHAP thì cột TongSLN của bảng TONKHO được cập nhật theo.

Khi chúng ta thay đổi số lượng nhập (SlNhap) của dòng 1 hoặc dòng 2 thì tổng số lượng nhập sẽ là 10. Mặc dù, dòng 3 cũng là vật tư DD02 nhưng số lượng nhập không được tính

Dựa vào số phiếu nhập (SoPn) chúng ta biết được ngày nhập (NgayNhap). Và chúng ta dễ dàng nhận thấy chỉ có N001 và N002 có cùng tháng và cùng năm nhập là 01/2007.

Tại bảng TONKHO, mặc dù có 2 dòng cùng chứa vật tư (MaVTu) là DD02 nhưng chỉ có tổng số lượng nhập (TongSLN) của dòng 1 được cập nhật vì đúng năm tháng là 200701.