如何知道postgres SQL表上的所有操作?

时间:2016-12-21 06:03:57

标签: sql postgresql

我正在寻找一种方法来了解特定表上发生的所有事件,而不启用postgres日志。

只想知道天气添加/删除/修改的顺序。

由于

2 个答案:

答案 0 :(得分:1)

对于postgres中的审计跟踪,您必须编写一个函数并在触发器中调用它,请查看 wiki.postgresql.org/wiki/Audit_trigger ,您将不得不编写一个函数声明如果在表上发生更新或删除或插入,它将触发更新审计表的操作,该审计表捕获所需信息,例如ip地址,查询,旧数据,新数据,已发生操作的时间戳等。< / p>

答案 1 :(得分:0)

您可以创建触发器(请参阅postgres docs)以观察所有更改,例如:

CREATE TRIGGER insert_trigger AFTER INSERT ON my_table
EXECUTE PROCEDURE insert_function();
CREATE TRIGGER update_trigger AFTER UPDATE ON my_table
EXECUTE PROCEDURE update_function();
CREATE TRIGGER delete_trigger AFTER DELETE ON my_table
EXECUTE PROCEDURE delete_function();

或仅使用一个函数执行此操作:

CREATE TRIGGER universal_trigger AFTER INSERT OR UPDATE OR DELETE ON my_table
EXECUTE PROCEDURE universal_function();