TRIGGER TRONG SQL
Trigger là gì ?
Hiểu đơn giản dễ dàng thì Trigger là một trong những stored procedure không tồn tại tsay đắm số. Trigger triển khai một giải pháp auto Khi 1 trong cha câu lệnh Insert, Update, Delete làm biến hóa tài liệu nằm trong bảng bao gồm đựng trigger.
Bạn đang xem: Trigger trong sql
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 gì ?
Trigger thường xuyên được thực hiện nhằm soát sổ ràng buộc (check constraints) bên trên nhiều quan hệ tình dục (các bảng/table) hoặc bên trên nhiều chiếc (nhiều record) của bảng.Bài toán đặt ra.
Quý khách hàng bao gồm 2 bảng kho mặt hàng cùng đặt đơn hàng links cùng nhau do mã hàng.Xem thêm: Tỷ Lệ An Toàn Vốn Tối Thiểu Là Gì, Hệ Số Car Là Gì, Tỷ Lệ An Toàn Vốn Tối Thiểu Là Gì

Giải pháp
lúc người dùng đặt đơn hàng ta chỉ tất cả 3 các loại thao tác thiết yếu với DataBase là :Insert, Delete, UpdateVậy chỉ việc tạo3 triggertương ứng là okNgười dùngđặt hàng:Số lượng còn trong kho = Số lượng còn - Số lượt đặtNgười dùnghủykhông đặt hàng nữa:Số lượng còn trong kho = Số lượng còn + Số lượt đặtNgười dùngcập nhậtSố lượng đặt =>Số lượng còn tăng bớt tùy ýVấn đề
Tại 2 trường hợpinsertvàdeleteta triển khai bình thường. Nhưng trong ngôi trường hợpupdateSố lượng mặt hàng tồn sẽ sảy ra vào 3 trường đúng theo sau.Số lượng đặt ban đầu = 5 tiếp đến tăng thêm 10 => con số trong kho vẫn giảm 10 tương ứngSố lượng đặt bây giờ = 10 tiếp nối giảm đi 3 => con số trong kho đang tăng 7 tương ứngtận dụng bài toán trong sql câu lệnhupdate = Insert new row To Delete old rowcõ nghĩa là khi tiến hành update DataBase trong sql vẫn chạy Việc insert dữ liệu new trước sau đó sẽ xóa đi bảng cũ.Giải quyết vấn đề
tận dụng điểm mạnh câu hỏi thực hiện Trigger luôn lâu dài 2 bảnginsertedvàdeletedta đang rút ra 1 cách làm update trung trong phần đông trường hợpSLTonKhoCu = SLTonKhoCu - inserted.SLDatHang + deleted.SLDatHang
Thực hiện qua ví dụ nhỏ
Ban đầu thêm dữ liệu với select nó ra





Source code bài bác toàn
Trigger thêm


/* update sản phẩm vào kho sau khoản thời gian đặt 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 sản phẩm vào kho sau khi 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/* cập nhật mặt hàng trong kho sau khi diệt đặ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 nhưng chúng ta sử dụng Trigger là ko cần cùng họ hay tưởng rằng chính vì vậy nhưng chả ai cần sử dụng nó là trọn vẹn không nên. Nhưng Trigger theo nhỏng bản thân tò mò qua thì vẫn có khá nhiều nơi đã thực hiện nó vào mục tiêu riêng rẽ của họ.Xem thêm: Cách Chuyển Tiền Qua Ngân Hàng Vietcombank, Những Cách Chuyển Tiền Vào Tài Khoản Vietcombank
Cảm ơn vì chúng ta đã gọi.
Via Số lượng còn tăng sút tùy ý Vấn đề Tại 2 ngôi trường hợp insert và delete ta tiến hành bình thường. Nhưng vào ngôi trường hòa hợp update Số lượng sản phẩm tồn vẫn sảy ra vào 3 trường hợp sau. Số lượng đặt lúc đầu = 5 tiếp đến tạo thêm 10 => con số trong kho đã bớt 10 khớp ứng Số lượng đặt từ bây giờ = 10 kế tiếp giảm sút 3 => số lượng trong kho vẫn tăng 7 tương ứng Tậ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 vẫn chạy Việc insert tài liệu new trước tiếp đến sẽ xóa đi bảng cũ. Giải quyết sự việc tận dụng ưu điểm bài toán sử dụng Trigger luôn luôn lâu dài 2 bảng inserted với deleted ta đã rút ra 1 công thức cập nhật trung trong phần đa trường thích hợp SLTonKhoCu = SLTonKhoCu - inserted.SLDatHang + deleted.SLDatHang Thực hiện nay qua ví dụ bé dại Ban đầu thêm tài liệu với select nó ra