2015-05-27 40 views
1

我在PostgreSQL 9.4,并希望编写一个触发器,它可以存储SQL查询影响一个多行。我是什么意思?是否有可能获得一行被删除的SQL查询?

CREATE OR REPLACE FUNCTION partner.daily_profit_logger() RETURNS TRIGGER AS $$ 
BEGIN 
    IF TG_OP = 'INSERT' 
     INSERT INTO query_log (query) VALUES (-- getting sql-query, performing the Insert operation 
            ) 
     RETURN NEW; 
END $$ 
language plpgsql; 
+0

所以你想写一个触发器,保存执行的查询? –

+0

我建议你看看[这](https://wiki.postgresql.org/wiki/Audit_trigger_91plus)(不要重新发明轮子) – Houari

+0

我在postgresql wiki上找到了一个审计触发器:https://wiki.postgresql .org/wiki/Audit_trigger –

回答

1

Postgres有一个extensive logging facility setup。您应该查看log_statement = mod,它将记录所有数据修改查询(包括但不限于INSERTDELETE)。

干杯,