HostingViet | Công ty Cổ phần Công nghệ số Thiên Quang

Trigger Trong SQL Là Gì? Hướng Dẫn Sử Dụng Trigger Trong SQL

Tư vấn dịch vụ - Các dịch vụ Cloud, Server, Hosting & Phần mềm | 2024-01-03 10:30:48+07

Trigger trong SQL là gì?

Trigger là thủ tục SQL được thực hiện ở phía máy chủ khi có bất kỳ sự kiện nào xảy ra như Insert, Update hay Delete. Ngoài ra, Trigger còn được hiểu là một stored procedure dạng đặc biệt (vì nó không có tham số) được thực thi tự động ngay khi có sự kiện làm dữ liệu bị thay đổi. Server DB là nơi lưu trữ, quản lý Trigger, và được sử dụng khi người dùng muốn kiểm tra sự ràng buộc toàn vẹn của DB.

Ba đặc điểm tạo nên sự khác biệt giữa Trigger và stored procedures:

Tuy nhiên, việc không dùng tham số trên Trigger không là một hạn chế của quá trình nhận thông tin sự kiện, và người dùng hoàn toàn có nhiều lựa chọn khác phục vụ cho hoạt động lấy thông tin từ sự kiện.

Trường hợp sử dụng Trigger trong SQL Server

Trigger trong SQL được sử dụng trong các trường hợp sau:

Cú pháp tạo Trigger trong SQL cơ bản

Dưới đây là đoạn code tạo Trigger cơ bản: 

CREATE TRIGGER tên_trigger  

ON { Tên_bảng }   

[ WITH ]  

{ FOR | AFTER | INSTEAD OF }   

{ [INSERT], [UPDATE] , [DELETE] }

Cấu tạo Trigger trong SQL Server

Trigger trong SQL có 2 lớp, gồm:

Bên cạnh đó, DML Trigger cũng có một số loại khác như: 

- FOR,  AFTER [INSERT, UPDATE, DELETE]: Những Trigger này sẽ được thực thi khi kết thúc câu lệnh kích hoạt. 

Vai trò của Trigger trong SQL Server là gì?

Mối quan hệ của dữ liệu (relational databases) có đặc điểm cơ bản là tính nhất quán. Điều này được hiểu là tất cả thông tin lưu trữ trong database phải nhất quán với các session, transaction. Vì thế, để thực hiện tính nhất quán này, SQL Server phải thực thi sự ràng buộc giữa các primary key và foreign key.

Ngoài ra, trong SQL Server, khi 2 bảng nằm trên 2 database hoặc máy chủ khác nhau thì việc thực thi tính toàn vẹn tham chiếu giữa chúng bằng foreign key sẽ không thể thực hiện được. Do đó, đối với tình huống này chỉ có giải pháp duy nhất là dùng Trigger trong SQL Server

Ưu điểm của Trigger trong SQL

Nhược điểm của Trigger trong SQL

>>Xem thêm: Các kiểu dữ liệu trong SQL Server : Cập nhật cực đầy đủ và chi tiết nhất

Bài tập về Trigger trong SQL

Để hiểu hơn về Trigger, bạn có thể tham khảo ví dụ sau:

Giả sử, bạn có bảng employees như hình minh họa bên dưới.

Bây giờ, bạn tạo một Trigger có chức năng lưu giữ lịch sử cập nhật của mỗi nhân viên. Để thực hiện, bạn làm theo các bước hướng dẫn sau:

- Bước 1: Bạn cần tạo một bảng employee mới, đặt tên là employee_edit bằng lệnh như sau.

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

);

- Bước 2: bạn viết Trigger thực hiện chức năng lưu trữ các thay đổi của employees. Câu lệnh lúc này là:

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âu lệnh trên, bạn dùng từ khóa OLD để có thể truy cập thông tin dữ liệu của hàng trong cột employeeNumber và lastname bị Trigger gây ảnh hưởng. 

*Lưu ý: 

- Bước 3: Thực hiện cập nhập bảng employees với cú pháp câu lệnh sau.

UPDATE employees 

SET 

    lastName = 'Phan'

WHERE

    employeeNumber = 1056;

Nếu muốn kiểm tra TRIGGER được thực hiện chưa, bạn sử dụng câu lệnh bên dưới để truy vấn trên bảng employees_edit:

SELECT * FROM employees_edit;

Lúc này, kết quả truy vấn trả về như hình sau:

Như vậy, Trigger đã được thực hiện, đồng thời nó đã tiến hành chèn một bảng ghi mới trong bảng employees_edit.

Xóa Trigger trong SQL

Cú pháp DROP TRIGGER là câu lệnh xóa Trigger trong SQL khỏi cơ sở dữ liệu. Đối với Trigger DML, câu lệnh có dạng minh họa như sau: 

DROP TRIGGER [ IF EXISTS ] [schema_name.]trigger_name [ ,...n ];

Trong đó:

Khi muốn xóa nhiều Trigger cùng lúc, bạn sử dụng dấu “,” để phân tách Trigger. 

Đối với Trigger DDL, để xóa một hay nhiều Trigger, bạn dùng câu lệnh DROP TRIGGER sau:

DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   

ON { DATABASE | ALL SERVER };

Trong đó:

Đối với xóa Trigger của sự kiện LOGON, bạn dùng câu lệnh bên dưới: 

DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   

ON ALL SERVER;

*Lưu ý: 

Khi bạn xóa bất ký bảng nào thì toàn bộ Trigger trong SQL có liên kết với bảng sẽ tự động xóa theo. 

>>Xem thêm: Hướng dẫn tạo tài khoản SQLServer để chạy website

Nhà cung cấp Tên Miền - Hosting - VPS tốt nhất Việt Nam

Là đơn vị thuộc top 3 lĩnh vực dịch vụ lưu trữ website tại Việt Nam, Hosting Việt được đánh giá là nhà cung cấp tên miền giá rẻ và hosting giá rẻ cũng như luôn nhận được nhiều lời giới thiệu từ diễn đàn tin học về nơi mua host ở đâu tốt . Chỉ từ 50.000đ/tháng, người dùng đã có ngay cho mình một host để thỏa sức học tập, nghiên cứu hoặc chạy demo website… Bên cạnh đó, Hosting Việt còn là đơn vị luôn tiên phong trong công nghệ điện toán đám mây (Cloud Hosting), gói thuê server với băng thông khủng không giới hạn.

Hosting Việt có đa dạng gói dịch vụ, bên cạnh những gói giá siêu rẻ 50.000đ/tháng, nhà cung cấp còn có những vps giá rẻ chất lượng dành cho nhiều nhóm doanh nghiệp khác nhau. Các gói này luôn đáp ứng đủ nhu cầu lưu trữ, truy cập hàng chục nghìn người mỗi ngày.

Ngoài ra, với dịch vụ chăm sóc khách hàng chuyên nghiệp, đội ngũ kỹ thuật viên có chuyên môn cao sẽ nhanh chóng hỗ trợ, xử lý các vấn đề phát sinh. Từ đó, giúp người dùng có được sự trải nghiệm mượt mà, thú vị.

Như vậy, qua bài viết trên Hosting Việt đã giúp bạn có thêm nhiều thông tin bổ ích! Hi vọng bạn sẽ có thể trang bị thêm thật nhiều kiến thức khác mà chúng tôi đã chia sẻ! Nếu có bất kỳ thắc mắc hay câu hỏi nào cần giải đáp, hãy liên hệ ngay với Hosting Việt để được hỗ trợ và tư vấn nhanh chóng, miễn phí nhé!


Bài viết khác