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

Cách lấy văn bản SQL từ trình kích hoạt sự kiện Postgres

Bắt đầu từ PostgreSQL 9.5, hàm pg_event_trigger_ddl_commands() có sẵn cho ddl_command_end trình kích hoạt sự kiện. Sử dụng TAG bộ lọc, nó có thể được sử dụng để xử lý bất kỳ bảng ALTERed nào. object_identity (hoặc objid ) có thể được sử dụng để giải quyết vấn đề ban đầu là biết bảng nào đã được thay đổi. Đối với việc nhận toàn bộ lệnh, nó cũng có sẵn, nhưng nó thuộc loại nội bộ pg_ddl_command .

CREATE TABLE t (n INT);

CREATE FUNCTION notice_event() RETURNS event_trigger AS $$
DECLARE r RECORD;
BEGIN
    FOR r IN SELECT * FROM pg_event_trigger_ddl_commands() LOOP
        RAISE NOTICE 'caught % event on %', r.command_tag, r.object_identity;
    END LOOP;
END;
$$
LANGUAGE plpgsql;

CREATE EVENT TRIGGER tr_notice_alter_table
  ON ddl_command_end WHEN TAG IN ('ALTER TABLE')
  EXECUTE PROCEDURE notice_event();

ALTER TABLE t ADD c CHAR;

kết quả đầu ra:NOTICE: caught ALTER TABLE event on public.t




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cấu trúc lại một hàm PL / pgSQL để trả về kết quả đầu ra của các truy vấn SELECT khác nhau

  2. PostgreSQL cách xem truy vấn nào đã chạy

  3. Làm thế nào để có được Thời gian tạo cơ sở dữ liệu trong PostgreSQL 9.0?

  4. Chạy truy vấn với LIMIT / OFFSET và cũng nhận được tổng số hàng

  5. Cột thả không xóa hoàn toàn các tham chiếu cột - postgresql