TopDev

Cách tạo trigger trong PostgreSQL? Hướng dẫn chi tiết kèm ví dụ

minhdev 📖 3 phút đọc

Trong cơ sở dữ liệu, trigger (trình kích hoạt) là một công cụ mạnh mẽ giúp tự động hóa các thao tác khi một sự kiện xảy ra như INSERT, UPDATE, hoặc DELETE. PostgreSQL hỗ trợ trigger rất mạnh và linh hoạt. Vậy cách tạo trigger trong PostgreSQL như thế nào? Bài viết sau sẽ hướng dẫn bạn từ cơ bản đến nâng cao.



✅ Trigger trong PostgreSQL là gì?#

Trigger là một đoạn mã (thường là một function) được PostgreSQL tự động thực thi khi có một sự kiện nhất định xảy ra trên bảng, như:

  • Thêm dữ liệu (INSERT)

  • Cập nhật dữ liệu (UPDATE)

  • Xóa dữ liệu (DELETE)

Trigger giúp đảm bảo tính toàn vẹn dữ liệu, tự động hóa quy trình, hoặc ghi log các thay đổi.



🧠 Cấu trúc tạo trigger trong PostgreSQL#

Để tạo trigger, bạn cần thực hiện 2 bước:

  • Tạo trigger function (dùng ngôn ngữ PL/pgSQL)

  • Tạo trigger gắn với bảng cụ thể và sự kiện cần theo dõi



🔧 Cú pháp tạo trigger function#

CREATE FUNCTION ten_function() RETURNS trigger AS $$ BEGIN -- logic xử lý khi trigger được kích hoạt RETURN NEW; -- hoặc RETURN OLD; tùy theo loại trigger END; $$ LANGUAGE plpgsql;



🔧 Cú pháp tạo trigger#

CREATE TRIGGER ten_trigger AFTER INSERT OR UPDATE OR DELETE ON ten_bang FOR EACH ROW EXECUTE FUNCTION ten_function();

🔍 Ghi chú:

    • BEFORE hoặc AFTER là thời điểm kích hoạt trigger.
    • FOR EACH ROW: Trigger chạy cho từng dòng bị ảnh hưởng.


📌 Ví dụ: Ghi log mỗi khi thêm mới nhân viên#

1. Tạo bảng chính và bảng log#

` CREATE TABLE nhanvien ( id SERIAL PRIMARY KEY, hoten TEXT, vitri TEXT );

CREATE TABLE log_nhanvien ( id SERIAL PRIMARY KEY, hanhdong TEXT, thoigian TIMESTAMP DEFAULT CURRENT_TIMESTAMP, thongtin JSONB ); `

2. Tạo trigger function#

CREATE FUNCTION ghi_log_nhanvien() RETURNS trigger AS $$ BEGIN INSERT INTO log_nhanvien(hanhdong, thongtin) VALUES ('INSERT', to_jsonb(NEW)); RETURN NEW; END; $$ LANGUAGE plpgsql;

3. Tạo trigger#

CREATE TRIGGER trigger_ghi_log AFTER INSERT ON nhanvien FOR EACH ROW EXECUTE FUNCTION ghi_log_nhanvien();

4. Kiểm tra trigger hoạt động#

` INSERT INTO nhanvien(hoten, vitri) VALUES ('Nguyễn Văn A', 'Kế toán');

SELECT * FROM log_nhanvien; `

✅ Kết quả: Dữ liệu mới sẽ được ghi vào bảng log một cách tự động.



🛠 Một số loại trigger nâng cao#

Loại Trigger Mô tả
BEFORE INSERT Gọi trước khi thêm dòng
AFTER UPDATE Gọi sau khi cập nhật
BEFORE DELETE Gọi trước khi xóa
INSTEAD OF Dùng cho VIEW thay vì bảng
FOR EACH STATEMENT Trigger chỉ chạy 1 lần cho toàn bộ câu lệnh (ít dùng hơn FOR EACH ROW)


❗ Lưu ý khi sử dụng trigger trong PostgreSQL#

  • Tránh viết quá nhiều logic phức tạp trong trigger → có thể ảnh hưởng hiệu năng.

  • Sử dụng trigger cho các tác vụ tự động như: ghi log, kiểm tra ràng buộc tùy chỉnh, đồng bộ bảng phụ...

  • Debug trigger có thể khó khăn hơn → nên ghi log hoặc test kỹ càng.



Kết luận#

Trigger trong PostgreSQL là công cụ mạnh mẽ giúp bạn tự động hóa quy trình xử lý dữ liệu trong hệ thống. Việc hiểu rõ cách tạo trigger trong PostgreSQL sẽ giúp bạn xây dựng hệ thống cơ sở dữ liệu linh hoạt, an toàn và chuyên nghiệp hơn.

Bài liên quan trong #Database

✓ Đã sao chép link