2015-05-27 68 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)。

乾杯,