Trigger trong sql là gì
Trigger là gì ?
Hiểu đơn giản và dễ dàng thì Trigger là 1 stored procedure không tồn tại tsay mê số. Trigger triển khai một bí quyết tự động hóa Khi 1 trong tía câu lệnh Insert, Update, Delete làm cho biến đổi dữ liệu nằm trong bảng bao gồm 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 cần sử dụng làm những gì ?
Trigger hay được thực hiện để kiểm tra ràng buộc (check constraints) trên các tình dục (nhiều bảng/table) hoặc trên các loại (những record) của bảng.Bài toán đề ra.
quý khách có 2 bảng kho mặt hàng và đặt đơn hàng links cùng nhau vị mã hàng.Xem thêm: Phụ Nữ Quan Hệ Nhiều Lần Có Ảnh Hưởng Gì Không ? Cách Bồi Bổ Lại
Lúc người tiêu dùng đặt hàng hãy tự động update số lượng tồn vào bảng kho sản phẩm.
Giải pháp
Lúc người tiêu dùng đặt đơn hàng ta chỉ bao gồm 3 nhiều loại thao tác làm việc thiết yếu cùng với CSDL 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 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 sút tùy ýVấn đề
Tại 2 trường hợpinsertvàdeleteta triển khai thông thường. Nhưng vào ngôi trường hợpupdateSố lượng hàng tồn sẽ sảy ra vào 3 trường phù hợp sau.Số lượng đặt ban sơ = 5 kế tiếp tạo thêm 10 => số lượng trong kho đang bớt 10 tương ứngSố lượng đặt hôm nay = 10 tiếp đến sụt giảm 3 => số lượng vào kho đã tăng 7 tương ứngtận dụng ưu điểm Việc vào 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 vẫn chạy bài toán insert tài liệu mới trước tiếp đến đang xóa đi bảng cũ.Giải quyết vấn đề
tận dụng lợi thế Việc áp dụng Trigger luôn luôn trường tồn 2 bảnginsertedvàdeletedta đang đúc kết 1 bí quyết update trung trong số đông trường hợpSLTonKhoCu = SLTonKhoCu - inserted.SLDatHang + deleted.SLDatHang
Thực hiện tại 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 với mã là 1Cập nhật lên 10Cập nhật về 3Cập nhật một số trong những thông báo không giống cơ mà ko tương quan cho số lượngXóa 1-1 đặt hàngSource code bài bác toàn
Trigger thêmTrigger XóaTrigger Sửa/* update sản phẩm trong kho sau khoản thời gian 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 sản phẩm trong kho sau khoản thời gian update mua 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 hàng vào kho sau khoản thời gian bỏ mua 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à các bạn áp dụng Trigger là không bắt buộc với chúng ta thường xuyên tưởng rằng chính vì thế mà chả ai cần sử dụng nó là hoàn toàn không đúng. Nhưng Trigger theo như mình khám phá qua thì vẫn có nhiều nơi vẫn thực hiện nó vào mục tiêu riêng của họ.Xem thêm: 7 Điều Bạn Có Những Ngày Chẳng Muốn Làm Gì Cả, Chán Chẳng Muốn Làm Gì
Cảm ơn do các bạn đã phát âm.
Via Số lượng còn tăng giảm tùy ý Vấn đề Tại 2 ngôi trường thích hợp insert cùng delete ta triển khai bình thường. Nhưng trong trường phù hợp update Số lượng mặt hàng tồn đã sảy ra vào 3 ngôi trường hợp sau. Số lượng đặt thuở đầu = 5 tiếp đến tăng lên 10 => con số vào kho đã giảm 10 tương xứng Số lượng đặt hôm nay = 10 sau đó sụt giảm 3 => số lượng vào kho đã tăng 7 tương xứ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 tiến hành update DataBase vào sql đã chạy câu hỏi insert tài liệu mới trước kế tiếp vẫn xóa đi bảng cũ. Giải quyết sự việc lợi thế Việc thực hiện Trigger luôn sống thọ 2 bảng inserted và deleted ta sẽ rút ra 1 bí quyết cập nhật trung vào hồ hết ngôi trường hợp SLTonKhoCu = SLTonKhoCu - inserted.SLDatHang + deleted.SLDatHang Thực hiện tại qua ví dụ nhỏ dại Ban đầu thêm tài liệu với select nó ra