Прошу помощи с созданием роли или тригера для аудита выбранных столбцов в таблице.. вот что имеем : некая таблица из 70+ столбцов
имеем table_audit вот с такими столбцами :
table_name //имя таблицы где произошли изменения
column_name // имя столбца
date //дата изменения
oid //id записи
old_value // старое значение
new_value //новое значение
user //кто внес изменение
набрасываю все от руки - чтобы названия были понятны - в реальной таблице руки бы оторвать придумшику имен.
для поставленной задачи получилось вот такое правило
CREATE OR REPLACE RULE "test_1" AS ON UPDATE TO table_1 DO ALSO INSERT INTO table_audit ( table_name, column_name, date, oid, old_value, new_value, user ) VALUES ( 'Table_1', 'column_2' now()::DATE, OLD.id, OLD."column_2", NEW."column_2", current_user );
Единицей сущности в любой
Единицей сущности в любой таблице является запись, а не столбец, так что никак.
Можно в самом правиле или триггере проверить что изменились именно нужные столбцы в таблице, а если изменились какие-то другие - ничего не делать.
а как нить можно получить имя
а как нить можно получить имя столбца ? обнаружил что можно получить имя схемы.. имя таблицы TG_TABLE_NAME или это тоже не возможно ?
Так вы же знаете какие
Так вы же знаете какие столбцы в таблице, нет?
в таблице знаю - не знаю
в таблице знаю - не знаю какие изменены.
Ладно закрываем вопрос - я кажется пойду другим путем - первую часть собрал - завтра буду пробовать все это запустить.
Суть такая - на веб страничке javascript будет говорить какие поля изменены и на основе этого выстраивать запрос.
Спасибо за подсказки.