0

[Phần 1] Trigger trong SQL Server – Mình đã "biết & hiểu" như thế nào?🔥

Hôm nay mình có một cuộc họp. Dù đã có vài năm quản lý một phần hệ thống cũng được, không lớn lắm mà cũng không nhỏ lắm, trong đó cũng có xử lý database đủ dùng, nhưng trong lúc họp, BA và QC bất ngờ hỏi:

"Em có biết viết trigger không?"

Trong bụng mình thầm nghĩ: "Ủa, hỏi đùa hay hỏi thiệt vậy trời?" Nhưng thấy họ rất quyết tâm, thậm chí còn tiếp tục hỏi:

"Em làm được không, không thì báo Lead DBA làm nhé!"

Thế là mình đáp:

"Để em tìm hiểu thêm rồi viết trước trên môi trường test, ổn rồi em đưa lên production."

Nhưng ngay lập tức, câu trả lời nhận được là:

"Trigger viết trên production luôn chứ test làm gì cho mất công!" 😱

Thôi thì nhân dịp này, mình tự xem như mình chưa biết gì hết và làm một bài tổng hợp nhỏ về kiến thức trigger:

🧠 Trigger là gì? Mình đã tiếp cận ra sao?

Hồi trước khi nhắc đến trigger, mình chỉ biết đơn giản là:

“Trigger là một đoạn code sẽ tự chạy khi có sự kiện xảy ra trong database.”

Nhưng khi bắt đầu làm kỹ hơn, mình đã thử phân tích Trigger theo khung 5W1H – giúp bản thân hiểu rõ và nhớ lâu hơn:

❓ Nội dung

  1. WHAT: Trigger là thủ tục tự động thực thi khi có sự kiện (INSERT, UPDATE, DELETE, LOGIN, DDL...) xảy ra.
  2. WHY: Để tự động xử lý logic phụ trợ (như audit log, kiểm tra business rule, tính toán lại dữ liệu…) mà không cần viết lại ở nhiều nơi.
  3. WHEN: Khi thao tác dữ liệu (AFTER, INSTEAD OF) hoặc thao tác hệ thống (DDL, LOGON).
  4. WHERE: Trong SQL Server, trigger nằm trong các đối tượng bảng hoặc toàn bộ database.
  5. WHO: Tự động chạy bởi SQL Server – không do người dùng gọi trực tiếp.
  6. HOW: Viết bằng T-SQL, lắng nghe sự kiện và xử lý dựa vào bảng ảo INSERTED, DELETED.

🔎 Mình học được gì từ phần "hiểu"?

  • Có nhiều loại trigger chứ không chỉ riêng “sau khi insert thì làm gì đó” 😅

    → AFTER, INSTEAD OF, DDL, LOGON đều có vai trò riêng.

  • Trigger không phải để thay thế logic trong app, mà là để hỗ trợ xử lý logic tập trung – đặc biệt trong những trường hợp cần tính toàn vẹn dữ liệu ở tầng DB.

  • Việc nắm được cách hoạt động của trigger giúp mình debug dễ hơn khi gặp những thay đổi “ngầm ngầm” trong hệ thống.

📌 Điều thú vị mình nhận ra:

Dù trigger rất mạnh, nhưng bản thân mình từng… hơi “ghét” nó, vì thấy nó “tự chạy” và khó kiểm soát. Nhưng khi hiểu rõ cơ chế và áp dụng đúng chỗ, thì nó lại là một công cụ cực kỳ đáng tin cậy.

🔁 Kết lại:

Đây là phần đầu tiên trong chuỗi chia sẻ nhỏ của mình về Trigger. Ở phần tiếp theo, mình sẽ nói rõ hơn về cách mình đã áp dụng Trigger trong dự án thực tế mà mình áp dụng 😅

🗨️ Còn bạn thì sao? Bạn đã từng dùng Trigger cho dự án nào chưa? Hoặc có câu chuyện nào thú vị với Trigger không? Comment chia sẻ cùng mình nhé 👇


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí