Trong SQL, một Trigger là một loại đối tượng cơ sở dữ liệu được sử dụng để tự động thực hiện một hành động hoặc chuỗi hành động khi có xảy ra một sự kiện cụ thể.
Sau đây hãy tìm hiểu rõ hơn Trigger trong SQL là gì? Cách tạo và ví dụ về Trigger SQL Server.
1. Trigger trong SQL là gì?
- Trigger trong SQL là một khối mã SQL được kích hoạt tự động khi một sự kiện đã được xác định xảy ra. 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) bản ghi trong một bảng. Trigger thường được sử dụng để thực hiện các hành động như kiểm tra tính toàn vẹn dữ liệu, ghi nhật ký (audit), hoặc thực hiện logic kinh doanh phức tạp khi một điều kiện cụ thể được đáp ứng.
- Các Loại Trigger trong SQL:
+ Trigger Trước (BEFORE INSERT/UPDATE/DELETE): Trigger loại này được thực thi trước khi sự kiện tương ứng xảy ra. Chúng thường được sử dụng để kiểm tra hoặc biến đổi dữ liệu trước khi nó được ghi vào cơ sở dữ liệu. Ví dụ, Trigger "BEFORE INSERT" có thể kiểm tra tính duy nhất của địa chỉ email của một nhân viên trước khi cho phép chèn một bản ghi mới vào bảng nhân viên.
+ Trigger Sau (AFTER INSERT/UPDATE/DELETE): Trigger sau, còn gọi là "AFTER INSERT," "AFTER UPDATE," hoặc "AFTER DELETE," được thực thi sau khi sự kiện xảy ra. Chúng thường được sử dụng để ghi nhật ký các thay đổi, gửi thông báo, hoặc cập nhật các bản ghi liên quan. Ví dụ, bạn có thể sử dụng trigger "AFTER UPDATE" để ghi lại mọi thay đổi được thực hiện trên thông tin liên hệ của một khách hàng.
2. Cách tạo và ví dụ về Trigger SQL Server
- Ví dụ về trình kích hoạt trigger khi sử dụng production.products như sau:
- Tạo bảng ghi
Câu lệnh CREATE TABLE được đặt tên production.product_audits để ghi lại một số thông tin khi INSERT hoặc DELETE xảy ra sự kiện với table = production.products
Bảng production.product_audits có tất cả các cột từ bảng production.products. Bên cạnh đó, nó có thêm một vài cột để ghi lại những thay đổi, ví dụ như updated_at, operation và change_id.
- Tạo DML Trigger
+ Đầu tiên, để tạo trigger mới, chỉ định tên trigger và schema có trong đề bài: CREATE TRIGGER production.trg_product_audit
+ Tiếp theo, chỉ đinh tên table mà trigger sẽ kích hoạt khi một sự kiện xảy ra: ON production.products
+ Sau đó, bạn liệt kê một hoặc nhiều sự kiện sẽ call trigger trong lênh AFTER: AFTER INSERT, DELETE
+ Nội dung của trigger bắt đầu với từ khóa AS: AS, BEGIN
+ Bên trong trigger, bạn thiết lập SET NOCOUNT để ON để ngăn chặn số lượng hàng được trả lại khi trigger bị ảnh hưởng: SET NOCOUNT ON
+ Trigger sẽ chèn một cột vào table production.product_audits bất cứ khi nào một row được insert hoặc delete khỏi bảng production.products. Dữ liệu cung cấp để chèn từ các bảng INSERTED và DELETED thông qua UNION ALL.
+ Sâu đây, bạn gộp các phần lại với nhau
+ Cuối cùng, bạn thực hiện toàn bộ câu lệnh để tạo trigger. Sau khi trigger được tạo, bạn có thể tìm thấy nó trong folder trigger như hình dưới đây:
Hy vọng bài viết trên sẽ giúp bạn hiểu rõ hơn về trigger trong SQL và cách tạo trigger trong SQL như thế nào. Việc sử dụng trigger không bắt buộc và nó vẫn được sử dụng với nhiều mục đích riêng. Chúc các bạn thành công.