Я заинтересован в использовании следующего механизма аудита в существующей базе данных PostgreSQL.
http://wiki.postgresql.org/wiki/Audit_trigger
но, хотел бы (если возможно) сделать одну модификацию. Я также хотел бы записать значение primary_key, где оно может быть запрошено позже. Итак, я хотел бы добавить поле с именем что-то вроде «record_id» в таблицу «logged_actions». Проблема заключается в том, что каждая таблица в существующей базе данных имеет разные имена полей первичного ключа. Хорошей новостью является то, что база данных имеет очень последовательное соглашение об именах. Это всегда, _id. Таким образом, если таблица была названа «employee», первичным ключом будет «employee_id».
Есть ли в любом случае, чтобы сделать это? По сути, мне нужно что-то вроде OLD.FieldByName (x) или OLD [x], чтобы получить значение из поля id для помещения в поле record_id в новой записи аудита.
Я понимаю, что мог бы просто создать отдельный, настраиваемый триггер для каждой таблицы, которую я хочу отслеживать, но было бы неплохо, чтобы он был универсальным.
edit: я также понимаю, что значение ключа регистрируется либо в старых, либо в новых полях данных. Но я бы хотел, чтобы запросы к истории были проще и эффективнее. Другими словами,
select * from audit.logged_actions where table_name = 'xxxx' and record_id = 12345;
другое редактирование: я использую PostgreSQL 9.1
Спасибо!