Trigger Là Gì Sql
Trigger là gì ?
Hiểu đơn giản thì Trigger là 1 trong những stored procedure không tồn tại tđắm say số. Trigger tiến hành một bí quyết tự động Lúc 1 trong những ba câu lệnh Insert, Update, Delete có tác dụng biến hóa tài liệu trong bảng có đựng trigger.
Cú pháp của Trigger
CREATE TRIGGER tên_trigger ON tên_bảngFOR DELETE, INSERT, UPDATEAS câu_lệnh_sql
Trigger cần sử dụng làm cái gi ?
Trigger thường được áp dụng để kiểm soát buộc ràng (check constraints) bên trên nhiều tình dục (các bảng/table) hoặc bên trên nhiều chiếc (các record) của bảng.Bạn đang xem: Trigger là gì sql
Bài toán thù đặt ra.
quý khách hàng bao gồm 2 bảng kho mặt hàng với đặt đơn hàng links với nhau do mã mặt hàng.Xem thêm: Chủ Đề Chành Xe Tiếng Anh Là Gì ? Ưu Điểm Của Loại Hình Chành Xe

Giải pháp
Khi người dùng đặt hàng ta chỉ tất cả 3 loại thao tác làm việc chủ yếu cùng với CSDL là : Insert, Delete, UpdateVậy chỉ việc chế tác 3 trigger tương ứng là ok Người sử dụng đặt hàng: Số lượng còn vào kho = Số lượng còn - Số lượt đặtNgười sử dụng hủy không đặt đơn hàng nữa: Số lượng còn vào kho = Số lượng còn + Số lượt đặtNgười dùng cập nhật Số lượng đặt => Số lượng còn tăng sút tùy ýVấn đề
Ở 2 trường hợp insert và delete ta tiến hành thông thường. Nhưng trong ngôi trường thích hợp update Số lượng hàng tồn đang sảy ra trong 3 trường hợp sau.Số lượng đặt lúc đầu = 5 tiếp đến tăng thêm 10 => số lượng vào kho sẽ sút 10 tương ứngSố lượng đặt bây giờ = 10 tiếp đến giảm xuống 3 => số lượng trong kho đã tăng 7 tương ứngtận dụng Việc vào sql câu lệnh update = Insert new row To Delete old row cõ nghĩa là khi tiến hành update DataBase vào sql sẽ chạy việc insert dữ liệu bắt đầu trước tiếp nối sẽ xóa đi bảng cũ.Xem thêm: Difference Between Garlic Powder Là Gì ? Bột Tỏi Là Gì
Giải quyết vấn đề
Tận dụng Việc sử dụng Trigger luôn luôn trường tồn 2 bảng inserted cùng deleted ta đang đúc kết 1 cách làm cập nhật trung vào hồ hết trường hợpSLTonKhoCu = SLTonKhoCu - inserted.SLDatHang + deleted.SLDatHang
Thực hiện nay qua ví dụ nhỏ
Ban đầu thêm dữ liệu với select nó ra





Source code bài xích toàn
Trigger thêm


/* update mặt hàng trong kho sau khi mua hàng hoặc cập nhật */CREATE TRIGGER trg_DatHang ON tbl_DatHang AFTER INSERT AS BEGINUPDATE tbl_KhoHangSET SoLuongTon = SoLuongTon - (SELECT SoLuongDatFROM insertedWHERE MaHang = tbl_KhoHang.MaHang)FROM tbl_KhoHangJOIN inserted ON tbl_KhoHang.MaHang = inserted.MaHangENDGO/* cập nhật hàng vào kho sau khoản thời gian cập nhật đặt đơn hàng */CREATE TRIGGER trg_CapNhatDatHang on tbl_DatHang after update ASBEGIN UPDATE tbl_KhoHang SET SoLuongTon = SoLuongTon - (SELECT SoLuongDat FROM inserted WHERE MaHang = tbl_KhoHang.MaHang) + (SELECT SoLuongDat FROM deleted WHERE MaHang = tbl_KhoHang.MaHang) FROM tbl_KhoHang JOIN deleted ON tbl_KhoHang.MaHang = deleted.MaHangendGO/* update hàng trong kho sau khi bỏ đặt đơn hàng */create TRIGGER trg_HuyDatHang ON tbl_DatHang FOR DELETE AS BEGINUPDATE tbl_KhoHangSET SoLuongTon = SoLuongTon + (SELECT SoLuongDat FROM deleted WHERE MaHang = tbl_KhoHang.MaHang)FROM tbl_KhoHang JOIN deleted ON tbl_KhoHang.MaHang = deleted.MaHangEND