TRIGGER SQL LÀ GÌ

     

Trigger là gì ?

Hiểu đơn giản thì Trigger là 1 trong những stored procedure không tồn tại tham số. Trigger thực thi một cách tự động khi 1 trong những ba câu lệnh Insert, Update, Delete làm thay đổi dữ liệu trên bảng tất cả chứa 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 dùng làm gì ?

Trigger hay được áp dụng để kiểm tra ràng buộc (check constraints) trên những quan hệ (nhiều bảng/table) hoặc trên nhiều dòng (nhiều record) của bảng.

Bạn đang xem: Trigger sql là gì

Bài toán để ra.

Bạn gồm 2 bảng kho hàng và đặt đơn hàng liên kết cùng với nhau vị mã hàng.

Xem thêm: Phí Dem Và Det Là Gì ? Phí Det Là Gì? Phí Lưu Container Demurrage, Detention

*

Khi bạn dùng đặt đơn hàng hãy tự động cập nhật con số tồn vào bảng kho hàng.

Giải pháp

Khi tín đồ dùng đặt đơn hàng ta chỉ tất cả 3 loại làm việc chính với csdl là : Insert, Delete, UpdateVậy chỉ cần tạo 3 trigger tương xứng là ok người dùng đặt hàng: Số lượng còn vào kho = con số còn - Số lượt đặtNgười dùng hủy không đặt hàng nữa: Số lượng còn trong kho = con số còn + Số lượt đặtNgười cần sử dụng cập nhật con số đặt => Số lượng còn tăng sút tùy ý

Vấn đề

Ở 2 trường hợp insert với delete ta triển khai bình thường. Tuy nhiên trong trường vừa lòng update số lượng hàng tồn vẫn sảy ra vào 3 trường thích hợp sau.Số lượng đặt ban sơ = 5 kế tiếp tăng lên 10 => con số trong kho sẽ bớt 10 tương ứngSố lượng đặt lúc này = 10 sau đó giảm xuống 3 => con số trong kho đang tăng 7 tương ứngTận dụng việc trong sql câu lệnh update = Insert new row to Delete old row cõ tức là khi thực hiện update database trong sql sẽ chạy việc insert tài liệu mới trước sau đó sẽ xóa đi bảng cũ.

Xem thêm: Có Nên Mua Caddy Bay Là Gì ? Hướng Dẫn Lắp Caddy Bay Caddy Bay Là Gì

Giải quyết vấn đề

Tận dụng việc thực hiện Trigger luôn luôn tồn trên 2 bảng inserted với deleted ta đang rút ra 1 công thức cập nhật trung trong các trường hợp

SLTonKhoCu = SLTonKhoCu - inserted.SLDatHang + deleted.SLDatHang

Thực hiện qua lấy ví dụ như nhỏ

Ban đầu thêm dữ liệu và select nó ra
*

Đặt sản phẩm 5 thành phầm với mã là 1

*

Cập nhật lên 10

*

Cập nhật về 3

*

Cập nhật một trong những thông tin khác nhưng không tương quan đến số lượng

*

Xóa đối chọi đặt hàng

*

Source code bài bác toàn

Trigger thêm

*

Trigger Xóa

*

Trigger Sửa

*

/* update hàng vào kho sau khi đặt đơn 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/* update hàng vào kho sau khi update đặt 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 thời điểm hủy đặ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à bạn thực hiện Trigger là không phải và bọn họ thường tưởng rằng chính vì như thế mà chả ai cần sử dụng nó là trọn vẹn sai . Tuy thế Trigger theo như mình tò mò qua thì vẫn có không ít nơi sẽ sử dụng nó vào mục tiêu riêng của họ.