Trigger là gì? 6 Điều cơ bản nhất cần biết về Trigger
18/06/2023 04:11 am | Lượt xem : 5981
Trigger là gì? Nó có vai trò như thế nào trong SQL Server? Hay có những ưu nhược điểm như nào? Bài viết dưới đây mang đến cho bạn những thông tin chung về Trigger.
Contents
Trigger trong SQL là gì?
Trigger là một đoạn code, nó sẽ vận hành trong trường hợp có một sự kiện nào đó xảy ra. Có rất nhiều loại sự kiện khác nhau có thể kích hoạt đoạn code này, cụ thể như việc chèn hàng vào trong bảng, làm lại/ thay đổi cấu trúc bảng hay việc đăng nhập vào một phiên bản server mới,…
Một số đặc điểm khiến trigger không giống với những stored procedures khác:
- Không thể tự làm thủ công các trigger.
- Trigger sẽ không được nhận thông số.
- Không thể khôi phục transaction trong trigger bởi người dùng.
Cấu trúc cú pháp
Người dùng sẽ dùng câu lệnh CREATE TRIGGER để tạo ra một Trigger.
Trong đó:
- Thời gian được kích hoạt là BEFORE/AFTER. Người dùng cần định rõ thời gian này, BEFORE dùng để xử lý hành động trước khi nó được thay đổi và AFTER là việc cần phải xử lý hành động sau khi thay đổi.
- Sự kiện bao gồm INSERT, UPDATE, DELETE.
- Các bảng sẽ được liên kết với trình kích hoạt, từ khóa ON được dùng để xác định.
Có mấy lớp Trigger trong SQL Server?
Có 2 lớp cụ thể trong SQL Server. Cụ thể:
DDL Trigger
Đây là viết tắt của Data Definition Language. Những sự kiện bị thay đổi cấu trúc sẽ kích hoạt công cụ này. Ngoài ra, công cụ này cũng có thể xuất hiện tại những sự kiện liên quan tới server.
DML Trigger
Đây là viết tắt của Data Modification Language. công cụ này khá phổ biến vì thế nó được sử dụng nhiều nhất hiện nay. Câu lệnh sửa đổi dữ liệu chính là điều kiện để kích hoạt như: một câu lệnh chèn vào bảng, cập nhật bảng hay xóa bỏ bảng.
Ngoài ra, DML trigger cũng có những loại khác như:
- FOR hoặc AFTER [[INSERT, UPDATE, DELETE]: sau khi lệnh kích hoạt được kết thúc sẽ sử dụng câu lệnh này.
- INSTEAD OF [INSERT, UPDATE, DELETE]: Đây là câu lệnh trái ngược so với FOR (AFTER). Hiểu một cách đơn giản thì đây là câu lệnh có thể thay thế cho câu lệnh kích hoạt
Vai trò trong SQL Server
Công cụ này có tác dụng nhất quán trong mọi session và transaction. Relational database (SQL server) thực hiện thông qua quá trình thực thi bắt buộc những primary key và foreign key.
Tại SQL Server, người dùng sẽ không được quyền thực thi tính toàn vẹn tham chiếu bảng bằng foreign key trong trường hợp các bảng này thuộc database hoặc server khác nhau. Trong trường hợp này, bạn cần dùng đến công cụ này trong sql.
Công cụ này được dùng khi bạn muốn kiểm tra bắt buộc trên nhiều bảng hay các dòng trong bảng. Ngoài ra, các chương trình đang có hàm chạy ngầm còn có thể sử dụng công cụ này.
Ưu nhược điểm
Ưu điểm
Các ưu điểm của công cụ này bao gồm:
- Có thể bắt lỗi business logic trong mức cơ sở dữ liệu.
- Có thể sử dụng công cụ này để thay thế cho việc hẹn giờ theo lịch.
- Có thể kiểm soát sự thay đổi trong bảng dữ liệu.
Nhược điểm
Công cụ này cũng còn những hạn chế cần được khắc phục như:
- Nó chỉ là một phần mở trong quá trình kiểm tra tính hợp lệ của dữ liệu. Vì thế công cụ này không có khả năng thay thế hoàn toàn công việc này.
- Khó để chỉ ra tầng cơ sở dữ liệu đang xảy ra vấn đề gì vì nó không hiện ra trên giao diện mà chỉ hoạt động ngầm.
- Công cụ này có thể làm cho lượng công việc tăng lên hay hệ thống chạy chậm lại khi thực hiện update lên bảng dữ liệu.
Hướng dẫn tạo Trigger qua ví dụ cụ thể
Dưới đây là hướng dẫn chi tiết việc tạo ra công cụ này để bạn có thể áp dụng:
Tạo bảng ghi
Trước hết, câu lệnh CREATE TABLE sẽ được đặt tên production.product_audits. Cụ thể, bạn sẽ sử dụng để ghi lại những thông tin khi INSERT hay DELETE xuất hiện sự kiện cùng với table = production.products
Tiếp theo, production.product_audits sẽ xuất hiện các cột bảng production.products. Ngoài ra còn có những cột được sử dụng để ghi lại các thay đổi. Cụ thể như updated_at, operation và change_id.
Tạo DML Trigger
- Việc đầu tiên đó là bạn cần tạo trigger mới, tên trigger và schema xuất hiện trong đề bài cũng sẽ được chỉ định:
- (CREATE TRIGGER production.trg_product_audit)
- Tiếp theo bạn cần thực hiện chỉ định tên bảng trong đó trigger hoàn toàn có thể kích hoạt ngay khi một sự kiện xuất hiện: (ON production.products)
- Tiến hành liệt kê một hoặc nhiều sự kiện sẽ call trigger tại lệnh AFTER:
- (AFTER INSERT, DELETE)
- Trigger sẽ được bắt đầu với từ khóa AS:
- (AS
- BEGIN)
- Tiếp theo bạn sẽ phải thiết lập SET NOCOUNT để ON, quá trình này sẽ giúp ngăn chặn số hàng sẽ bị trả lại nếu như trigger xảy ra vấn đề:
- (SET NOCOUNT ON;)
- Công cụ này sẽ chèn cột vào bảng production.product_audits trong quá trình một row được insert hay delete. Các thành phần dữ liệu cần thông qua UNION ALL trước khi được cung cấp để chèn từ INSERTED và DELETED.
- Bạn tiến hành Gộp các phần với nhau.
- Cuối cùng, bạn hãy thực hiện toàn bộ các câu lệnh để có thể tạo ra trigger trong SQL. Lúc này, bạn có thể tìm thấy trigger được tạo trong folder trigger.
Kiểm tra Trigger
Hãy chèn câu lệnh sau vào vào hàng mới trong production.products khi muốn kiểm tra việc tạo trigger của bạn:
Bạn cũng cần xem lại nội dung của bảng production.product_audits:
(SELECT
*
FROM
production.product_audits;)
Kết luận
Bài viết trên đã mang đến bạn những thông tin tổng quát nhất về trigger trong SQL. Công cụ này dược dùng với nhiều mục đích khác nhau và không phải là yêu cầu bắt buộc. Hy vọng bài viết dưới đây sẽ mang lại kiến thức hữu ích cho bạn.
Dịch vụ Email Server cao cấp tại TENTEN ưu đãi CỰC KHỦNG: