Triggers là gì

     

I. Khái niệm

Trigger hoàn toàn có thể đọc nhanh khô là 1 trong những quy trình hẹn tiếng triển khai Squốc lộ, được chạy tự Server ko nên ngóng phía client Hotline hay những xẩy ra ở phía server SAU KHI có các events Inser, Delete, tuyệt Update. Tuy nhiên khác với Stored Procedure, Trigger hoàn toàn không tồn tại tsi mê số. Và ta cần yếu điện thoại tư vấn triển khai thẳng Trigger bởi lệnh EXECUTE nhỏng Strore Procedure tuyệt bất kì lệnh nào khác. Trigger chỉ có thể chạy một phương pháp tự động. Trigger được tàng trữ trong DB Server cùng hay giỏi được dùng để đánh giá ràng buộc trọn vẹn tài liệu.

Bạn đang xem: Triggers là gì

II. Sử dụng Trigger

Để chế tác một Trigger, các bạn thực hiện câu lệnh CREATE TRIGGER:

CREATE TRIGGER trigger_name trigger_time trigger_sự kiện ON table_name FOR EACH ROW BEGIN ... END;Trong đó:

Một Trigger được khởi chế tạo ra sau câu lệnh CREATE TRIGGER. Quy tắc đánh tên đề nghị tuân theo nguim tắc: __, ví dụ before_employees_update.Thời gian kích hoạt : BEFORE hoặc AFTER. Cần đề xuất hướng đẫn thời hạn kích hoạc khi bạn xác định được quá trình kích hoạt của nó. Sử dụng tự khóa BEFORE ví như bạn có nhu cầu xử lýhành vi trước khi tiến hành đổi khác bên trên bạn dạng và AFTER giả dụ bạn cần phải cách xử lý hành vi sau khoản thời gian biến hóa được tiến hành hoàn thành.Sự kiện gây ra hoàn toàn có thể là INSERT, UPDATE, DELETE.Trình kích hoạt bắt buộc được links với cùng 1 bảng rõ ràng, sử dụng từ khóa ON nhằm xác định.Câu lệnh Squốc lộ nên được đặt thân tự khóa BEGIN và END.

III. Ví dụ

Chúng ta gồm bảng employees:

*

Bây giờ, bọn họ sẽ tạo 1 TRIGGER với chức năng: lưu lại định kỳ sử UPDATE báo cáo của mỗi EMPLOYEEĐầu tiên, họ sẽ tạo nên một bảng new là employees_edit để lưu giữ sự thay đổi trên bảng employee:

CREATE TABLE employees_audit ( id INT AUTO_INCREMENT PRIMARY KEY, employeeNumber INT NOT NULL, lastname VARCHAR(50) NOT NULL, changedat DATETIME DEFAULT NULL, action VARCHAR(50) DEFAULT NULL);Tiếp theo, bọn họ hãy viết TRIGGER nhằm thực hiện tác dụng giữ gìn thời gian biến hóa của employees.

Xem thêm: Chung Bá Phương Giữ Chức Chủ Tịch Hđqt Tc Advisors, Chung Bá Phương

DELIMITER $$CREATE TRIGGER before_employee_update BEFORE UPDATE ON employees FOR EACH ROW BEGIN INSERT INTO employees_edit SET action = "update", employeeNumber = OLD.employeeNumber, lastname = OLD.lastname, changedat = NOW(); END$$DELIMITER ;Trong thân của cú pháp TRIGGER, họ thực hiện từ bỏ khóa OLD để truy vấn vào mặt hàng của cột employeeNumber và lastname bị ảnh hưởng bươi TRIGGER.Lưu ý, với TRIGGER khái niệm cho INSERT, các bạn chỉ rất có thể thực hiện từ khóa NEW. Tuy nhiên, TRIGGER cho DELETE không tồn tại mặt hàng new làm sao nên có thể rất có thể áp dụng trường đoản cú khóa OLD. Với TRIGGER đến hàm UPDATE, OLDdùng để làm đề cùa tới mặt hàng trước lúc được cập nhật, NEW đề cùa đến mặt hàng sau khoản thời gian được cập nhật.Để coi tất cả những TRIGGER bao gồm trong cơ sở dữ liệu của bạn, sử dụng:SHOW TRIGGERS;Chúng ta hãy bước đầu cập nhật bảng employees để soát sổ TRIGGER vừa được định nghĩa:UPDATE employees SET lastName = "Phan"WHERE employeeNumber = 1056;Để kiểm tra coi TRIGGER đã có tiến hành tốt không, bạn cũng có thể truy vấn trên bảng employees_edit:

SELECT * FROM employees_edit;Kết trái tầm nã vấn trả về:

Vậy là Trigger đã được triển khai cùng nó đã cyếu một bạn dạng ghi bắt đầu vào bảng employees_edit.

IV. Tại sao ta buộc phải sài TRIGGER

Ưu điểm:

Sử dụng Trigger nhằm kiểm tra tính toàn diện của cơ sở dữ liệu.Trigger hoàn toàn có thể bắt lỗi logic tại mức các đại lý tài liệu.Có thể sử dụng trigger là 1 bí quyết không giống nhằm sửa chữa thay thế việc triển khai những công việc hứa hẹn giờ theo lịch.Trigger hết sức công dụng khi áp dụng nhằm điều hành và kiểm soát đông đảo đổi khác của tài liệu vào bảng.

Nhược điểm:

Trigger chỉ cần một phần không ngừng mở rộng của việc soát sổ tính hòa hợp lệ của dữ liệu chứ đọng cấp thiết thay thế sửa chữa hoàn toàn được các bước này.Trigger chuyển động ngầm trong csdl, ko hiển thị ở tầng hình ảnh. Do đó, khó khăn chỉ ra được điều gì xẩy ra trên tầng csdl.Trigger tiến hành những update lên bảng tài liệu vì thế nó làm cho tăng lượng quá trình lên csdl cùng làm cho khối hệ thống chạy chậm rãi.

Chuyên mục: Đầu tư