如何创建TRIGGER谁将保存schemat更改

时间:2014-10-10 17:24:13

标签: sql postgresql triggers audit

我在论坛上是新手。我的英语很抱歉。

我的问题是:如何创建一个可以保存数据库更改的TRIGGER。

例如(添加列,创建表,删除数据库,替换函数)。

我想将此信息保存在表格中。我想在DATABASE中保存有关所有表(行)和函数的信息;

1 个答案:

答案 0 :(得分:0)

我的回答是:

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();