Sql 如何创建触发器,谁将在更改时保存方案

Sql 如何创建触发器,谁将在更改时保存方案,sql,postgresql,triggers,audit,Sql,Postgresql,Triggers,Audit,我是论坛的新手。我对我的英语感到抱歉 我的问题是:如何创建一个触发器来保存数据库中的任何更改 例如添加列、创建表、删除数据库、替换函数 我想将此信息保存在表中。我想在数据库中保存关于所有表行和函数的信息 我的答案是: 但是,您无法捕获drop数据库作为触发器,该触发器可以记录将与数据库一起删除的内容。感谢您的快速响应 CREATE OR REPLACE FUNCTION audyt_abort_any_command() RETURNS event_trigger LANGUAGE plp

我是论坛的新手。我对我的英语感到抱歉

我的问题是:如何创建一个触发器来保存数据库中的任何更改

例如添加列、创建表、删除数据库、替换函数

我想将此信息保存在表中。我想在数据库中保存关于所有表行和函数的信息

我的答案是:
但是,您无法捕获drop数据库作为触发器,该触发器可以记录将与数据库一起删除的内容。感谢您的快速响应
CREATE OR REPLACE FUNCTION audyt_abort_any_command()
  RETURNS event_trigger
 LANGUAGE plpgsql
  AS $$
BEGIN
    INSERT INTO audit_query (user_change, date_change, tg_tag, query) 
                    VALUES ( user, now(), tg_tag, current_query());
END;
$$;

CREATE TABLE audit_query (
    id serial,
    user_change        varchar(40) NOT NULL,
    date_change timestamp,
    tg_tag       varchar(40) NOT NULL,
    query    text NOT NULL, 
    PRIMARY KEY (id)
);
CREATE EVENT TRIGGER save_audit_ddl ON ddl_command_start
   EXECUTE PROCEDURE audyt_abort_any_command();