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