Định nghĩa Trigger là gì? Ý nghĩa và cách sử dụng Trigger

0
783

Chắc rằng, cái tên Trigger đã không còn quá xa lạ đối với các lập trình viên công nghệ thông tin. Với những bạn trẻ đang có ý định và đam mê đi theo lĩnh vực này thì cũng nên tìm hiểu xem Trigger là gì cũng như ý nghĩa và cách sử dụng Trigger. Nào, hãy cùng ITNavi tìm hiểu kỹ lưỡng hơn về vấn đề này ngay sau đây. 

Trigger là gì?

Trong SQL Trigger được định nghĩa là một thủ tục SQL được thực thi tại phía server ngay khi xuất hiện các sự kiện như: Insert, Delete, hay Update. Trigger là một trong những loại stored procedure thường đặc biệt (là dạng không có tham số) sẽ được thực thi (execute) theo một cách tự động nhất ngay khi xuất hiện các sự kiện thay đổi dữ liệu. Từ đó, Trigger sẽ được lưu trữ và quản lý trong  Server DB, nó sẽ được sử dụng trong các trường hợp mà bạn muốn kiểm tra các ràng buộc toàn vẹn đối với DB. 

Định nghĩa Trigger là gì?

Định nghĩa Trigger là gì?

Trigger có khả năng chạy một cách tự động và sẽ được lưu trữ trong database server. Từ đó, chúng sẽ được sử dụng với mục đích kiểm tra được những sự ràng buộc toàn vẹn của dữ liệu. 

Lúc nào thì Trigger sẽ được sử dụng?

Sau khi hiểu rõ Trigger là gì thì chắc chắn bạn đang băn khoăn và không biết lúc nào thì trigger sẽ được sử dụng đúng không nào? Hãy tìm hiểu kỹ lưỡng hơn về phương diện này qua thông tin dưới đây: 

  • Trigger sẽ được ưu tiên sử dụng nhằm mục đích phục vụ các kiểm tra ràng buộc trên nhiều mối quan hệ và các dòng code trên nhiều dòng sản phẩm khác của bảng. 
  • Sử dụng Trigger giúp cho chương trình có thể thực hiện chạy các hàm ngầm nhằm mục đích phục vụ những trường hợp hữu hạn. Thường thì Trigger không được sử dụng thường xuyên cho các mục đích kinh doanh hoặc các giao dịch khác. 
  • Ngoài ra, Trigger còn có khả năng ngăn chặn vấn đề xóa dữ liệu quan trọng xảy ra thì Ngăn chặn việc xóa những dữ liệu quan trọng. Bạn có thể sử dụng back up cho các dữ liệu quan trọng khác khi sang table khác có ở trong phòng khi,… sẽ bị xóa ngoài ý muốn). 

Bạn đọc tham khảo thêm: Native App là gì? Tập lập trình App với Native App đơn giản

Ưu và nhược điểm của Trigger là gì?

Để bạn hiểu rõ hơn về Trigger thì ngay sau đây chúng ta hãy cùng điểm qua những ưu điểm và nhược điểm của nó nhé.

Ưu điểm của Trigger là gì?

  • Trigger có khả năng bắt được các lỗi business logic ở các mức csdl.
  • Lập trình viên có thể sử dụng trigger như một cách khác biệt để có thể thay thế được những công việc cần phải hẹn giờ theo lịch. 
  • Trigger được đánh giá nhờ mang lại hiệu quả cao khi được sử dụng để thực hiện kiểm soát cho các thay đổi khác của dữ liệu bên trong bảng. 

Trigger có khả năng bắt được  lỗi business logic 

Trigger có khả năng bắt được  lỗi business logic 

Nhược điểm của Trigger là gì?

  • Trigger là một trong những phần mở rộng của việc kiểm tra lại các tính chất hợp lệ của dữ liệu mà không thực hiện thay thế hoàn toàn được các công việc thế này. 
  • Trigger thường hoạt động ngầm ở trong csdl, nó không được hiển thị ở tầng giao diện. Do vậy, rất khó cho lập trình viên trong việc chỉ ra được điều gì sẽ xảy ra ở trong tầng csdl.
  • Trigger có thể thực hiện được những update lên bộ phận bảng dữ liệu. Chính vì vậy, nó có thể giúp bạn gia tăng lượng công việc lên csdl và có thể làm hệ thống chạy chậm lại. 

Hướng dẫn cách sử dụng Trigger cho người mới

Để có thể tạo ra được một Trigger phù hợp thì bạn cần phải sử dụng câu lệnh sau: CREATE TRIGGER:

CREATE TRIGGER trigger_name trigger_time trigger_event

 ON table_name

 FOR EACH ROW

 BEGIN

 …

 END;

Trong số đó:

  • Mỗi một Trigger đều sẽ được khởi tạo ngay sau câu lệnh CREATE TRIGGER. Với quy tắc đặt tên sẽ được tuân theo nguyên tắc như sau:  [trigger time]_[table “” not found /]
    _[trigger event]. Ví dụ như: before_employees_update.

Cú pháp của Trigger

Cú pháp của Trigger

  • Về khoảng thời gian kích hoạt: BEFORE hoặc AFTER thì lập trình viên cần phải đưa ra được chỉ định thời gian kích hoạt. Hoặc có thể bạn cần phải xác định được việc tiến hành kích hoạt của nó. Từ đó, sử dụng từ khóa BEFORE nếu như bạn đang muốn xử lý được hành động trước khi thực hiện được các thay đổi khác trên bản. Bạn có thể chọn AFTER nếu như bạn đang cần phải xử lý các hành động ngay sau khi các thay đổi đã được thực hiện xong và triệt để. 
  • Các sự kiện nếu được gây ra đều sẽ có thể là: INSERT, UPDATE, DELETE.
  • Các trình kích hoạt của của hệ thống sẽ được liên kết với các bảng cụ thể và bạn chỉ cần sử dụng từ khóa ON để xác định. 
  • Các câu lệnh SQL cần phải được đặt ở giữa hai từ khóa là BEGIN và END.

Ví dụ cụ thể như sau: 

Trigger có khả năng cung cấp cho các cơ sở dữ liệu báo cáo cho học sinh, trong đó các đánh giá điểm của mọi bộ phận học sinh đều sẽ được ghi lại. Bên trong lược đồ, bạn có thể tạo ra một Trigger để nó thực hiện tính toán tổng số và các giá trị trung bình khác của những bảng đã được chỉ định. Từ đó, quá trình tự động chèn bất cứ khi nào vào một bản ghi đều sẽ được thực hiện. 

Tại đây, vì trigger sẽ thực hiện gọi trước ngay khi các bản ghi đã được chèn vào nên bạn có thể sử dụng các thẻ BEFORE.

Những dòng lệnh SQL ở trên đều sẽ tạo ra một  trigger trong cơ sở các dữ liệu sinh viên. Trong đó, bất cứ khi nào mà điểm môn học được nhập, trước khi chèn dữ liệu này vào dữ liệu kia thì trigger đều sẽ tính toán được hai giá trị đó rồi chèn thêm những giá trị đã nhập khác. 

insert into Student values(0, “ABCDE”, 20, 20, 20, 0, 0); 

Query OK, 1 row affected (0.09 sec)

Nhờ vào cách này, trigger đã có thể được tạo ra và thực thi trong những có sở dữ liệu phù hợp hơn. 

Một ví dụ cụ thể khi sử dụng trigger trong SQL:

Chúng ta sẽ có bảng employees như sau: 

Bảng employees

Bảng employees

Ngay lúc này, bạn sẽ thực hiện tạo 1 TRIGGER với các chức năng chính như: lưu lại lịch sử UPDATE các thông tin của mỗi một EMPLOYEE. Trước hết thì chúng ta sẽ thực hiện bước tạo mới một employees_edit để có thể lưu lại được các thay đổi nhất định ở 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 sẽ thực hiện viết TRIGGER để có thể thực hiện được một số chức năng lưu lại vào thời điểm có thể thay đổi employees. Bước viết sẽ thực hiện như sau: 

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ú pháp Trigger sẽ sử dụng được từ khóa OLD

Trong thân cú pháp Trigger sẽ sử dụng được từ khóa OLD

Ở trong thân của các cú pháp TRIGGER thì chúng ta đều có thể sử dụng được các từ khóa OLD để có thể thực hiện được những truy cập nhất định vào hàng của các cột employee Number và lastname rồi bị ảnh hưởng bởi TRIGGER. Bạn nên lưu ý rằng, với TRIGGER thì nó sẽ định nghĩa cho INSERT và bạn chỉ có thể sử dụng được những từ khóa NEW.

Tuy nhiên, TRIGGER dành cho DELETE thường không có hàng mới nào nên bạn chỉ cần sử dụng bộ từ khóa  OLD là được. Với TRIGGER cho các hàm UPDATE, OLD sẽ được sử dụng để có thể thực hiện đề cập đến các cửa hàng trước khi quá trình cập nhật được thực hiện. Từ đó, NEW có thể đề cập đến các hàng sau ngay khi đã hoàn tất cập nhật trước. Để có thể xem được tất cả các TRIGGER tồn tại trong cơ sở dữ liệu của mình thì bạn có thể sử dụng: 

SHOW TRIGGERS;

Sau khi bắt đầu cập nhật bảng của employees để kiểm tra cho TRIGGER vừa được định nghĩa thì chúng sẽ như sau: 

UPDATE employees 

SET 

    lastName = ‘Phan’

WHERE

    employeeNumber = 1056;

Nếu bạn muốn kiểm tra xem TRIGGER đã được thực hiện hay là chưa thì có thể truy vấn vào bảng employees_edit để theo dõi:

SELECT * FROM employees_edit;

Các kết quả truy vấn trả về sẽ như sau: 

Từ đó, Trigger đã được thực hiện và nó cũng đã chèn được một bản ghi mới vào trong bảng employees_edit.

Tổng kết

Trên đây, là những kiến thức tổng quan liên quan đến kiến thức Trigger là gì mà ITNavi muốn gửi đến bạn đọc. Hy vọng rằng, với thông tin này thì bạn đã hiểu rõ hơn về Trigger cũng như biết cách để sử dụng nó một cách chính xác hơn trong quá trình làm việc. 

LEAVE A REPLY

Please enter your comment!
Please enter your name here