PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Ví dụ về trình kích hoạt CHO MỖI STATEMENT

OLDNEW 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:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để bạn làm toán ngày mà bỏ qua năm?

  2. IntegrityError khi lưu một mục mới vào db postgresql trong django?

  3. Postgresql trong cơ sở dữ liệu bộ nhớ django

  4. PostgreSQL:Tạo chỉ mục cho cột boolean

  5. Tại sao quan hệ setval () Fail Với ... không tồn tại?