Trigger trong sql là gì

Trigger là gì ?

Hiểu dễ dàng thì Trigger là 1 trong stored procedure không tồn tại tmê say số. Trigger thực hiện một biện pháp tự động Lúc 1 trong tía câu lệnh Insert, Update, Delete có tác dụng chuyển đổi tài liệu nằm trong 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 cần sử dụng làm gì ?

Trigger hay được thực hiện nhằm soát sổ buộc ràng (check constraints) trên nhiều quan hệ tình dục (nhiều bảng/table) hoặc trên nhiều mẫu (các record) của bảng.

Bài tân oán đặt ra.

quý khách có 2 bảng kho hàng với mua hàng link với nhau vì chưng mã mặt hàng.

Xem thêm: Hướng Dẫn Sử Dụng Máy South, Nts 321R+ / Nts 312L / Nts 312B

*

Lúc người dùng đặt hàng hãy auto update số lượng tồn trong bảng kho hàng.

Giải pháp

Lúc người tiêu dùng đặt đơn hàng ta chỉ tất cả 3 một số loại thao tác thiết yếu với cơ sở dữ liệu là :Insert, Delete, UpdateVậy chỉ cần 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ủyko mua 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 giảm tùy ý

Vấn đề

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

Giải quyết vấn đề

tận dụng lợi thế bài toán thực hiện Trigger luôn mãi mãi 2 bảnginserteddeletedta đã đúc kết 1 bí quyết update trung vào phần đông 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ới select nó ra
*

Đặt mặt hàng 5 sản 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 trong những ban bố không giống cơ mà không tương quan mang đến số lượng

*

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

*

Source code bài xích toàn

Trigger thêm

*

Trigger Xóa

*

Trigger Sửa

*

/* update hàng vào kho sau khoản thời gian đặt hàng hoặc update */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 mặt hàng vào kho sau thời điểm 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/* update sản phẩm vào kho sau thời điểm 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 cơ mà chúng ta áp dụng Trigger là ko yêu cầu và họ hay tưởng rằng chính vì thế cơ mà chả ai cần sử dụng nó là trọn vẹn sai. Nhưng Trigger theo nhỏng mình khám phá qua thì vẫn có không ít khu vực sẽ áp dụng nó vào mục tiêu riêng biệt của họ.

Cảm ơn bởi chúng ta đang hiểu.

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

Leave a Reply

Your email address will not be published. Required fields are marked *