hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • MySQL
TRIGGER Trong MySQL – Kích Hoạt Tự Động Khi Dữ Liệu Thay Đổi

TRIGGER Trong MySQL – Kích Hoạt Tự Động Khi Dữ Liệu Thay Đổi

  • 08-07-2025
  • Toanngo92
  • 0 Comments

TRIGGER trong MySQL — một công cụ rất mạnh mẽ cho phép bạn tự động thực thi các câu lệnh SQL khi có thay đổi xảy ra trong bảng (INSERT, UPDATE, DELETE). Đây là tính năng cực kỳ hữu ích để bảo vệ, ghi log, hoặc kiểm soát dữ liệu ngay tại tầng cơ sở dữ liệu.


Mục lục

  • ✅ 1. Trigger là gì?
  • ✅ 2. Khi nào nên dùng Trigger?
  • ✅ 3. Cú pháp tạo Trigger
  • ✅ 4. Ví dụ: Ghi log khi thêm sinh viên
    • 🧪 Bảng chính và bảng log:
    • 🔔 Tạo trigger khi thêm sinh viên:
    • ✅ Kiểm tra:
  • ✅ 5. Trigger với UPDATE
  • ✅ 6. Trigger với DELETE
  • ✅ 7. Các biến đặc biệt trong Trigger
  • ✅ 8. Quản lý Trigger
    • Xem trigger:
    • Xóa trigger:
  • ✅ 9. Lưu ý khi dùng Trigger
  • 📘 Kết Luận

✅ 1. Trigger là gì?

  • Trigger là một khối mã SQL tự động thực thi khi có thao tác INSERT, UPDATE, hoặc DELETE xảy ra trên một bảng.
  • Hoạt động giống như một “người gác cổng”: khi có ai “đụng” vào bảng, trigger sẽ kiểm soát.

✅ 2. Khi nào nên dùng Trigger?

Tình huống thực tếMục đích sử dụng Trigger
Ghi log thay đổi dữ liệuLưu lịch sử cập nhật, xóa dữ liệu (audit log)
Tự động cập nhật trường phụ thuộcCập nhật ngày sửa cuối (updated_at), số lượng
Kiểm tra logic ràng buộc nâng caoVí dụ: không cho xóa nếu đang được dùng
Đồng bộ bảng khácCập nhật bảng tổng, bảng backup, bảng thống kê…

✅ 3. Cú pháp tạo Trigger

CREATE TRIGGER ten_trigger
[BEFORE|AFTER] [INSERT|UPDATE|DELETE]
ON ten_bang
FOR EACH ROW
BEGIN
    -- câu lệnh SQL
END;

BEFORE = trước khi thực hiện thao tác
AFTER = sau khi thao tác hoàn tất


✅ 4. Ví dụ: Ghi log khi thêm sinh viên

🧪 Bảng chính và bảng log:

CREATE TABLE Students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE StudentLog (
    log_id INT AUTO_INCREMENT PRIMARY KEY,
    student_name VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

🔔 Tạo trigger khi thêm sinh viên:

DELIMITER $$

CREATE TRIGGER trg_log_insert_student
AFTER INSERT ON Students
FOR EACH ROW
BEGIN
    INSERT INTO StudentLog(student_name)
    VALUES (NEW.name);
END$$

DELIMITER ;

✅ Kiểm tra:

INSERT INTO Students(name) VALUES ('Toan');
SELECT * FROM StudentLog;

→ Tự động ghi log "Toan" vào bảng StudentLog.


✅ 5. Trigger với UPDATE

DELIMITER $$

CREATE TRIGGER trg_update_log
BEFORE UPDATE ON Students
FOR EACH ROW
BEGIN
    INSERT INTO StudentLog(student_name)
    VALUES (CONCAT('Updated from ', OLD.name, ' to ', NEW.name));
END$$

DELIMITER ;

✅ 6. Trigger với DELETE

DELIMITER $$

CREATE TRIGGER trg_delete_log
AFTER DELETE ON Students
FOR EACH ROW
BEGIN
    INSERT INTO StudentLog(student_name)
    VALUES (CONCAT('Deleted: ', OLD.name));
END$$

DELIMITER ;

✅ 7. Các biến đặc biệt trong Trigger

BiếnDùng khi…Ý nghĩa
NEW.colINSERT, UPDATEGiá trị mới được thêm hoặc cập nhật
OLD.colUPDATE, DELETEGiá trị cũ trước khi thay đổi

✅ 8. Quản lý Trigger

Xem trigger:

SHOW TRIGGERS;

Xóa trigger:

DROP TRIGGER IF EXISTS trg_log_insert_student;

✅ 9. Lưu ý khi dùng Trigger

Lưu ýMô tả
✅ Hoạt động tự động, không cần gọi thủ công
❌ Không cho phép CALL procedure có tham số động
✅ Nên giữ trigger ngắn gọn và hiệu quảTránh gây chậm hệ thống
❌ Không hỗ trợ SELECT trả kết quả trực tiếpChỉ dùng SELECT INTO, không dùng SELECT *
✅ Trigger không thể tự gọi chính nó (vòng lặp vô hạn sẽ bị chặn)

📘 Kết Luận

  • Trigger giúp bạn tự động hóa hành vi khi bảng bị tác động.
  • Dùng để ghi log, kiểm soát dữ liệu, đồng bộ bảng phụ, hoặc tăng tính toàn vẹn nghiệp vụ.
  • Hãy sử dụng hợp lý để tránh làm chậm hiệu suất hoặc tạo vòng lặp logic không mong muốn.

Bài viết liên quan:

TCL Trong MySQL – Quản Lý Giao Dịch Với COMMIT, ROLLBACK, SAVEPOINT
FUNCTION Trong MySQL – Định Nghĩa Hàm Tùy Chỉnh Trả Về Giá Trị
Giao Dịch (Transaction) Trong MySQL — START TRANSACTION, COMMIT, ROLLBACK
Stored Procedure Trong MySQL — thủ tục lưu trữ
Tăng Tốc Truy Vấn Dữ Liệu Với INDEX Trong MySQL
VIEW Trong MySQL — Bảng Ảo Từ Truy Vấn
Điều Kiện Trong Truy Vấn Với CASE WHEN và Wildcard, REGEXP trong MySQL
Truy Vấn Con (SUBQUERY) và Biểu Thức Bảng Chung (CTE) Trong MySQL
Kết Hợp Dữ Liệu Từ Nhiều Bảng Với JOIN Trong MySQL
Hàm Tổng Hợp và Nhóm Dữ Liệu Trong MySQL: GROUP BY, HAVING
Truy Vấn Dữ Liệu Với SELECT Trong MySQL
Các Lệnh DML Cơ Bản Trong MySQL: INSERT, UPDATE, DELETE

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Truy Vấn Dữ Liệu Với SELECT Trong MySQL

Các Lệnh DML Cơ Bản Trong MySQL: INSERT, UPDATE, DELETE

TCL Trong MySQL – Quản Lý Giao Dịch Với COMMIT, ROLLBACK, SAVEPOINT

DCL Trong MySQL – Quản Lý Quyền Truy Cập Với GRANT và REVOKE

FUNCTION Trong MySQL – Định Nghĩa Hàm Tùy Chỉnh Trả Về Giá Trị

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×