Как создать TRIGGER, который будет сохранять изменения схемы
Я новичок на форуме. Я извиняюсь от моего английского.
Мой вопрос: как создать TRIGGER, который будет сохранять любые изменения в БД.
Например (добавить столбец, создать таблицу, удалить базу данных, заменить функцию).
Я хочу сохранить эту информацию в таблице. Я хочу сохранить информацию обо всех таблицах (строках) и функции в DATABASE;
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();