Trigger Trong Sql Là Gì

  -  

Trigger là gì ?

Hiểu đơn giản và dễ dàng thì Trigger là một trong stored procedure không tồn tại tsay đắm số. Trigger thực hiện một cách auto Khi một trong những bố câu lệnh Insert, Update, Delete làm cho biến hóa tài liệu ở bảng tất cả cất trigger.

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

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 sử dụng làm cái gi ?

Trigger thường được sử dụng để kiểm tra ràng buộc (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 cái (nhiều record) của bảng.

Bài toán thù đề ra.

Quý khách hàng tất cả 2 bảng kho sản phẩm cùng đặt hàng link với nhau vì chưng mã mặt hàng.

Xem thêm: Hướng Dẫn Cách Tạo Khối Lệnh Trong Minecraft, Dễ Dàng Trong Tích Tắc

*

Lúc người tiêu dùng đặt đơn hàng hãy tự động update số lượng tồn trong bảng kho sản phẩm.

Giải pháp

Lúc người tiêu dùng đặt hàng ta chỉ bao gồm 3 loại thao tác làm việc bao gồm cùng với cơ sở dữ liệu là :Insert, Delete, UpdateVậy chỉ việc tạo3 triggerkhớp ứng là okNgười dùngđặt hàng:Số lượng còn vào kho = Số lượng còn - Số lượt đặtNgười dùnghủykhông mua hàng nữa:Số lượng còn vào 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 giảm tùy ý

Vấn đề

Ở 2 trường hợpinsertdeleteta triển khai thông thường. Nhưng trong ngôi trường hợpupdateSố lượng hàng tồn đã sảy ra vào 3 ngôi trường phù hợp sau.Số lượng đặt ban đầu = 5 kế tiếp tạo thêm 10 => con số vào kho đã sút 10 tương ứngSố lượng đặt từ bây giờ = 10 kế tiếp giảm đi 3 => con số vào kho vẫn tăng 7 tương ứngtận dụng việc trong sql câu lệnhupdate = Insert new row To Delete old rowcõ nghĩa là lúc tiến hành update CSDL trong sql sẽ chạy câu hỏi insert dữ liệu mới trước sau đó sẽ xóa đi bảng cũ.

Giải quyết vấn đề

Tận dụng câu hỏi áp dụng Trigger luôn luôn lâu dài 2 bảnginserteddeletedta đã đúc rút 1 phương pháp cập nhật trung vào đông đảo ngôi trường hợp

SLTonKhoCu = SLTonKhoCu - inserted.SLDatHang + deleted.SLDatHang

Thực hiện qua ví dụ nhỏ

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

Đặt mặt hàng 5 thành 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 số đọc tin khác nhưng mà ko tương quan mang đến số lượng

*

Xóa solo đặt hàng

*

Source code bài xích toàn

Trigger thêm

*

Trigger Xóa

*

Trigger Sửa

*

/* update hàng trong kho sau thời điểm đặ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/* update hàng trong kho sau thời điểm 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 mặt hàng trong kho sau thời điểm hủy đặt 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 mà bạn áp dụng Trigger là không nên với bọn họ thường xuyên tưởng rằng chính vì như vậy mà lại chả ai dùng nó là hoàn toàn sai. Nhưng Trigger theo nhỏng mình tìm hiểu qua thì vẫn có khá nhiều vị trí đã sử dụng nó vào mục đích riêng rẽ của họ.

Xem thêm: Đắng Cay Nữ Nhân Viên Chăm Sóc Khách Hàng Game Chăm Sóc Khách Hàng Game

Cảm ơn do các bạn đang đọc.

Via Số lượng còn tăng sút tùy ý Vấn đề Ở 2 ngôi trường phù hợp insert và delete ta thực hiện bình thường. Nhưng vào ngôi trường đúng theo update Số lượng hàng tồn đã sảy ra vào 3 ngôi 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ẽ giảm 10 tương xứng Số lượng đặt hôm nay = 10 tiếp nối sụt giảm 3 => số lượng vào kho đang tăng 7 tương ứng Tận dụng câu hỏi vào sql câu lệnh update = Insert new row To Delete old row cõ nghĩa là lúc triển khai update DataBase trong sql sẽ chạy câu hỏi insert dữ liệu mới trước tiếp nối đang xóa đi bảng cũ. Giải quyết vụ việc lợi thế bài toán thực hiện Trigger luôn luôn sống thọ 2 bảng inserted và deleted ta vẫn đúc kết 1 cách làm cập nhật trung trong hầu hết ngôi trường hòa hợp SLTonKhoCu = SLTonKhoCu - inserted.SLDatHang + deleted.SLDatHang Thực hiện nay qua ví dụ nhỏ tuổi Ban đầu thêm tài liệu và select nó ra