Trigger trong SQL là gì?

Trigger trong SQL là một thủ tục đặc biệt được thực thi tự động khi xảy ra một sự kiện cụ thể trong cơ sở dữ liệu. Các sự kiện này có thể bao gồm việc chèn (INSERT), cập nhật (UPDATE) hoặc xóa (DELETE), TRUNCATE dữ liệu từ một bảng.

Trigger cung cấp một cơ chế mạnh mẽ để tự động hóa các tác vụ và đảm bảo tính toàn vẹn dữ liệu trong hệ thống cơ sở dữ liệu.

Lợi ích của trigger:

  • Tự động hóa: Trigger có thể tự động hóa các tác vụ lặp đi lặp lại, giảm nhu cầu viết mã thủ công và nâng cao hiệu quả.
  • Tính toàn vẹn dữ liệu: Trigger có thể áp dụng các quy tắc xác nhận dữ liệu phức tạp hơn so với các ràng buộc thông thường, đảm bảo tính nhất quán dữ liệu trên nhiều bảng.
  • Ghi chép nhật ký kiểm tra: Trigger có thể được sử dụng để ghi chép lại các thay đổi được thực hiện đối với cơ sở dữ liệu, tạo lịch sử cho mục đích kiểm tra.
  • Đồng bộ hóa dữ liệu: Trigger có thể được sử dụng để giữ cho nhiều bảng được đồng bộ hóa bằng cách cập nhật giá trị trong các bảng phụ thuộc dựa trên các thay đổi trong bảng chính.

Cách sử dụng trigger:

Trigger được sử dụng trong nhiều trường hợp khác nhau, bao gồm:

  • Duy trì tính toàn vẹn tham chiếu: Đảm bảo mối quan hệ giữa các bảng bằng cách tự động cập nhật hoặc xóa dữ liệu liên quan khi có thay đổi xảy ra.
  • Xác thực dữ liệu: Áp dụng các quy tắc xác thực phức tạp vượt ra ngoài các ràng buộc cột cơ bản.
  • Ghi chép nhật ký kiểm tra: Ghi lại thông tin bất cứ khi nào dữ liệu được chèn, cập nhật hoặc xóa.
  • Đồng bộ hóa dữ liệu: Giữ cho nhiều bảng được đồng bộ hóa bằng cách cập nhật giá trị trong các bảng phụ thuộc dựa trên các thay đổi trong bảng chính.

Cấu trúc trigger:

Dưới đây là cấu trúc đơn giản của một trigger trong SQL:

SQL
CREATE TRIGGER trigger_name
  {BEFORE | AFTER}
  {INSERT | UPDATE | DELETE}
  ON table_name
  FOR EACH ROW
BEGIN
  -- Các câu lệnh SQL cần thực thi
END;

Ví dụ:

Hãy tưởng tượng một bảng orders có khóa ngoại tham chiếu đến bảng customers. Bạn có thể tạo một trigger để đảm bảo rằng khách hàng tồn tại trước khi đặt hàng:

SQL
CREATE TRIGGER enforce_customer_existence
BEFORE INSERT
ON orders
FOR EACH ROW
BEGIN
  IF NOT EXISTS (SELECT * FROM customers WHERE customer_id = NEW.customer_id) THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Customer does not exist.';
  END IF;
END;

Trigger này kích hoạt trước khi chèn một đơn hàng mới và kiểm tra xem khách hàng được tham chiếu có tồn tại hay không. Nếu không, nó sẽ báo lỗi ngăn chặn việc chèn đơn hàng không hợp lệ.

Lưu ý: Trigger có thể làm tăng độ phức tạp cho cơ sở dữ liệu của bạn. Hãy sử dụng chúng một cách thận trọng và cân nhắc đến tác động tiềm ẩn đến hiệu suất.

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận