我有興趣在現有的PostgreSQL數據庫中使用以下審計機制。使用PostgreSQL觸發器動態審計數據
http://wiki.postgresql.org/wiki/Audit_trigger
但是,想(如果可能的話),使一個修改。我還想將primary_key的值記錄在稍後可以查詢的地方。所以,我想在「logged_actions」表中添加一個名爲「record_id」的字段。問題是現有數據庫中的每個表都有一個不同的主鍵字段名。好消息是數據庫具有非常一致的命名約定。它總是,_id。所以,如果一個表名爲「employee」,那麼主鍵是「employee_id」。
有沒有辦法做到這一點?基本上,我需要OLD.FieldByName(x)或OLD [x]之類的東西來從id字段中獲取值,以便將其放入新審計記錄的record_id字段中。
我的確明白,我可以爲每個表格創建一個單獨的自定義觸發器,但我們希望將其保留爲通用的,這將非常好。
編輯:我也明白,鍵值不會記錄在舊/新數據字段中。但是,我希望能夠更簡單,更有效地查詢歷史。換句話說,
select * from audit.logged_actions where table_name = 'xxxx' and record_id = 12345;
另一個編輯:我使用PostgreSQL 9.1
謝謝!
感謝您的回覆並指出了這一點。我正在使用PostgreSQL 9.1(我已經更新了原始文章) –