Re: Way to quickly detect if database tables/columns/etc. were modified?

Поиск
Список
Период
Сортировка
От Melvin Davidson
Тема Re: Way to quickly detect if database tables/columns/etc. were modified?
Дата
Msg-id CANu8Fiz0rBw3qs+isG+6WVRcQcQNbmJm3T+8ccD8FVAGF3EQ5A@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Way to quickly detect if database tables/columns/etc. were modified?  (Evan Martin <postgresql2@realityexists.net>)
Список pgsql-general


On Mon, Oct 31, 2016 at 4:41 PM, Evan Martin <postgresql2@realityexists.net> wrote:
On 31/10/2016 8:26 PM, Melvin Davidson wrote:
I have tried using an event trigger to detect table creation (ie: tg_event_audit_all ) however, that does not parse the schema_name and objid
as does pg_event_trigger_dropped_objects(), so I am not sure that is a practical way to audit.

Event triggers seem like the most promising suggestion so far (given that I only really need to know that something has changed, not necessarily what).

Still, I was hoping for a solution that doesn't rely on modifying the database at all, i.e. something built into Postgres, but it's pretty clear from everyone's answers nothing like this exists. (I wasn't looking for a creation date, exactly, because I'd want to know when something was modified, too).

Evan,

I did a little digging. Note that PostgreSQL 9.5 iand above s required for this solution, but it should provide most of what you need.
If you go to http://stackoverflow.com/questions/23488228/how-to-get-sql-text-from-postgres-event-trigger/35616026
and scroll toward the bottom, you will see an example of how to trap object mods.
Additional info as to what else can be captured is detailed in https://www.postgresql.org/docs/9.5/static/functions-event-triggers.html
You can also use now() or transaction_timestamp(), etc to record the date/time the change occurred.
Finally, although the schema_name is provided in pg_event_trigger_ddl_commands(), you will need to
SELECT relname FROM pg_class WHERE relnamespace IN (SELECT oid from pg_namespace WHERE nspname = schema_name) INTO tbl_var;just to get the table name. I'm not sure why they didn't just give the table name firectly, but hey, at least there is a solution
--
Melvin Davidson
I reserve the right to fantasize.  Whether or not you
wish to share my fantasy is entirely up to you.

В списке pgsql-general по дате отправления:

Предыдущее
От: Patrick B
Дата:
Сообщение: Re: Turning slave into a master - PostgreSQL 9.2
Следующее
От: Samuel Williams
Дата:
Сообщение: Re: initdb createuser commands