【问题标题】:How to create TRIGGER who will be save the schemat change如何创建将保存架构更改的触发器
【发布时间】:2014-12-05 22:37:46
【问题描述】:
我是论坛的新手。我的英语很抱歉。
我的问题是:如何创建一个触发器来保存数据库上的任何更改。
例如(添加列、创建表、删除数据库、替换函数)。
我想将此信息保存在表格中。我想在 DATABASE 中保存有关所有表(行)和函数的信息;
【问题讨论】:
标签:
sql
postgresql
triggers
audit
【解决方案1】:
我的回答是:
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();