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ợpinsertdeleteta 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ảnginserteddeletedta đang đúc kết 1 bí quyết update trung trong số đông trường hợp

SLTonKhoCu = 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à 1

*

Cập nhật lên 10

*

Cập nhật về 3

*

Cậ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ượng

*

Xóa 1-1 đặt hàng

*

Source code bài bác toàn

Trigger thêm

*

Trigger Xóa

*

Trigger 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