Tìm hiểu TRIGGER trong SQL - tienanhit

Xin chào mọi người, hôm nay minh sẽ giới thiệu cho các bạn về một kỹ thuật trong SQL được sử dụng nhiều nhất trong mọi dự án liên quan đến cơ sở dữ liệu, đó là gì thì các bạn cũng biết rồi chứ, chính là TRIGGER vậy nó các tác dụng như thế nào thì mọi người có thể tham khảo dưới đây nhé.


1. Khái niệm về TRIGGER

Trigger là một thủ tục của câu lệnh SQL nó được thực hiện ở trên phí sever khi dữ liệu của chúng ta thay đổi thông qua các sự kiện insert, delete hoặc update, thì chúng ta phải sử dụng đến trigger để làm việc. Tuy nhiên trigger khác với Stored procedure thì trigger nó sẽ không có tham số truyền vào, mà nó sẽ thực hiện một cách tự động với sự cài đặt của người dung.


2. Cú pháp trigger

Điều quan trọng nhất là để tạo một trigger bạn sử dụng câu lệnh nhứ sau " CREATE TRIGGER"

  CREATE TRIGGER name_trigger 
  ON TABLE_NAME
  FOR EACH ROW
  BEGIN
   câu lênh SQL
  END

Trong đó:
  name_trigger là tên của trigger nó có nguyên tắc đặt tên theo sự kiện, theo table, theo thời gian
 thời gian Before hoắc After là sự lựa chọn của mỗi bạn và mỗi bài toán đặt ra, khi nào sử dụng before hoặc After
Nếu khi bạn muốn thảy đổi dữ liệu trước sự kiện thì bạn hãy dùng sự kiện before hoặc ngược lại thì bạn sử dụng After.
Sự kiện là thể là INSERT, UPDATE hoặc DELETE.
Trình kích hoạt phải găn với một bảng cụ thể thông qua từ khóa ON.
Câu lênh SQL phải nằm giữa Begin và End.

3. Ví dụ

Để làm một ví dụ về trigger thì các bạn có thể hãy tạo một cơ sở dữ liệu trên localhost bằng Xampp hoặc orcal SQL.
Câu lệnh tạo bảng nhân viên
CREATE TABLE NhanVien(
    id INT AUTO_INCREMENT PRIMARY KEY,
    manhanvien INT NOT NULL,
    hoten VARCHAR(50) NOT NULL,
    ngaythang DATETIME DEFAULT NULL,
    event VARCHAR(50) DEFAULT NULL
);
Bài toán đặt ra là giờ chúng ta hãy thêm một dữ liệu của một nhân viên sau đó chúng ta thay đổi thông tin của nhân viên đó thông qua các trường dữ liệu như (họ tên .. ) thì ngày tháng sẽ update lại thời gian chúng ta thay đổi nhân viên đó.

DELIMITER $$
CREATE TRIGGER nhanvien_update BEFORE UPDATE ON nhanvien
    FOR EACH ROW 
BEGIN
    INSERT INTO nhanvien
    SET event= 'update',
     manhanvien= OLD.manhanvien,
        Hoten= OLD.Hoten,
        ngaythang= NOW();
END$$
DELIMITER ;

Chúng ta có thể xem trigger bằng câu lệnh sau.

SHOW TRIGGERS

Giờ chúng ta hãy cập nhật dữ liệu của bảng nhân viên bằng câu lệnh SQL.

UPDATE nhanvien
SET 
    hoten= 'Mai thi huyen'
WHERE
    manhanvien= 1;

Để xem câu lệnh TRIGGER được thực hiện hay chưa, thì ta sử dụng câu lênh SQL như sau.

Đây là dữ liệu ban đâu.


4. Ưu, nhược điểm của TRIGGER


  • Ưu điểm
       - Sử dụng Trigger để kiểm tra tính toàn vẹn của cơ sở dữ liệu.

       - Trigger có thể bắt lỗi logic ở mức cơ sở dữ liệu.
       - Có thể dùng trigger là một cách khác để thay thế việc thực hiện những công việc hẹn giờ theo lịch.
       - Trigger rất hiệu quả khi sử dụng để kiểm soát những thay đổi của dữ liệu trong bảng.

  • Nhược điểm
      Trigger chỉ là một phần mở rộng của việc kiểm tra tính hợp lệ của dữ liệu chứ không thể thay thế hoàn toàn được công việc này.

Bài viết liên quan:


CommentEmoticon