OLD
và NEW
rỗng hoặc không được xác định trong trình kích hoạt cấp câu lệnh. Theo tài liệu:
Nhấn mạnh đậm của tôi.
Lên đến Postgres 10, bài đọc này hơi khác một chút, nhưng có cùng tác dụng:
Trong khi các biến bản ghi đó vẫn không được sử dụng cho trình kích hoạt cấp câu lệnh, một tính năng mới rất quan trọng là:
Bảng chuyển đổi trong Postgres 10+
Postgres 10 đã giới thiệu các bảng chuyển tiếp. Chúng cho phép truy cập vào toàn bộ tập hợp các hàng bị ảnh hưởng. Hướng dẫn sử dụng:
Theo liên kết đến sách hướng dẫn để biết các ví dụ về mã.
Ví dụ về trình kích hoạt cấp câu lệnh không có bảng chuyển tiếp
Trước khi các bảng chuyển tiếp ra đời, chúng thậm chí còn ít phổ biến hơn. Một ví dụ hữu ích là gửi thông báo
sau một số lệnh DML.
Đây là phiên bản cơ bản của những gì tôi sử dụng:
-- Generic trigger function, can be used for multiple triggers:
CREATE OR REPLACE FUNCTION trg_notify_after()
RETURNS trigger
LANGUAGE plpgsql AS
$func$
BEGIN
PERFORM pg_notify(TG_TABLE_NAME, TG_OP);
RETURN NULL;
END
$func$;
-- Trigger
CREATE TRIGGER notify_after
AFTER INSERT OR UPDATE OR DELETE ON my_tbl
FOR EACH STATEMENT
EXECUTE PROCEDURE trg_notify_after();
Đối với Postgres 11 trở lên, hãy sử dụng cú pháp tương đương, ít nhầm lẫn hơn:
...
EXECUTE FUNCTION trg_notify_after();
Xem: