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

*

Khi người dùng đặt hàng hãy tự động hóa update con số tồn trong bảng kho sản phẩm.

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 insertdelete 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ợp

SLTonKhoCu = 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
*

Đặt hàng 5 sản phẩm cùng với mã là 1

*

Cập nhật lên 10

*

Cập nhật về 3

*

Cập nhật một vài đọc tin không giống nhưng mà ko liên quan cho số lượng

*

Xóa đối kháng đặt hàng

*

Source code bài xích toàn

Trigger thêm

*

Trigger Xóa

*

Trigger Sửa

*

/* 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

Kết luận

Việc cơ mà chúng ta áp dụng Trigger là ko buộc phải với chúng ta thường tưởng rằng chính vì như vậy mà chả ai sử dụng nó là hoàn toàn không đúng . Nhưng Trigger theo như bản thân tò mò qua thì vẫn có nhiều nơi đang áp dụng nó vào mục tiêu riêng biệt của họ.