Cần hiểu rõ ưu, nhược điểm và hạn chế của trigger MySQL để sử dụng hiệu quả.
Ưu điểm
- Tính toàn vẹn dữ liệu — Trigger giúp kiểm tra tính toàn vẹn dữ liệu trong bảng, là cách thay thế để kiểm tra.
- Bắt lỗi logic nghiệp vụ — Trigger có thể bắt lỗi trong lớp cơ sở dữ liệu.
- Thay thế tác vụ theo lịch — Trigger kích hoạt tự động
BEFOREhoặcAFTERthay đổi dữ liệu, không cần chờ tác vụ theo lịch. - Kiểm toán (Auditing) — Rất hữu ích cho việc kiểm toán các thay đổi trong bảng.
- Ngăn chặn giao dịch không hợp lệ — Trigger rất hữu ích để ngăn chặn các giao dịch không hợp lệ.
- Ghi nhật ký sự kiện — Trigger có thể ghi log sự kiện và lưu thông tin truy cập bảng.
Nhược điểm
- Không thay thế tất cả validation — Trigger chỉ cung cấp validation mở rộng, không thay thế hoàn toàn.
- Vô hình từ ứng dụng client — Trigger chạy ngầm, khó phát hiện điều gì xảy ra ở lớp database.
- Gây tải cho server — Trigger có thể gây tải cao cho database server.
- Không khuyến nghị cho dữ liệu tốc độ cao — Trigger không phù hợp khi số sự kiện/giây lớn, vì trigger sẽ kích hoạt liên tục.
Hạn chế
- Chỉ một trigger cho mỗi timing/event — Mỗi bảng chỉ có một trigger cho mỗi tổ hợp timing/event (ví dụ: không thể tạo hai
BEFORE INSERTcho cùng bảng). - Không dùng RETURN — Trigger không trả về giá trị nên
RETURNkhông được phép. - Hạn chế khóa ngoại — Trigger không được kích hoạt bởi hành động khóa ngoại.
- Metadata lỗi thời — Nếu trigger được nạp vào cache, nó không tự động nạp lại khi metadata bảng thay đổi, có thể dùng metadata cũ.
- Không dùng CALL — Không thể dùng câu lệnh
CALLtrong trigger. - Không tạo bảng tạm hoặc view — Không thể tạo view cho bảng tạm hoặc view.
- Không kích hoạt bởi thay đổi INFORMATION_SCHEMA — Trigger không kích hoạt bởi thay đổi trong
INFORMATION_SCHEMAhoặcperformance_schemavì đây là view, trigger không cho phép trên view.