Logging access to data in database table

From: Ivan Radovanovic <radovanovic(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Logging access to data in database table
Date: 2012-01-25 12:29:45
Message-ID: 4F1FF5B9.2020409@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello,

I need to log access to certain data in database in some log (I prefer
to have that both in syslog and table in database), and I find it easy
to write to syslog, but I can't solve the problem of writing this to
database table.

If this protected data is read only using postgres function , and if in
the same function I add something like "insert into log_table (blah blah
blah)", somebody could simply do
begin;
select * from access_function(); /* assuming access_function is function
for accessing sensitive data */
rollback;

and no info about access would be written in log_table.

Is there some way to enforce insert within function to be always
performed (I checked and commit can't be called within functions), or is
there maybe some completely different clever way to solve this problem?

Thanks in advance,
Ivan

Responses

Browse pgsql-general by date

  From Date Subject
Next Message panam 2012-01-25 15:12:18 Re: Best way to create unique primary keys across schemas?
Previous Message Simon Riggs 2012-01-25 12:14:14 Re: Index on parent/child hierarchy