powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / создание роли или тригера для аудита
6 сообщений из 6, страница 1 из 1
создание роли или тригера для аудита
    #38607108
Славка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу помощи с созданием созданием роли или тригера для аудита выбранных столбцов в таблице.. вот что имеем : некая таблица из 70+ столбцов

имеем table_audit вот с такими столбцами :
table_name //имя таблицы где произошли изменения
column_name // имя столбца
date //дата изменения
oid //id записи
old_value // старое значение
new_value //новое значение
user //кто внес изменение

набрасываю все от руки - чтобы названия были понятны - в реальной таблице руки бы оторвать придумшику имен.

для поставленной задачи получилось вот такое правило

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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
	);




все бы ничего - но как ограничить данную роль только на 1 столбце.. мне не нужно следить за всеми столбцами - а только за определенными - скажем 10 столбцов ..
пробовал в ON UPDATE TO table_1 добавить имя столбца - но был отправлен подальше.
заранее спасибо.
...
Рейтинг: 0 / 0
создание роли или тригера для аудита
    #38607250
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СлавкаПрошу помощи с созданием созданием роли или тригера для аудита выбранных столбцов в таблице.. вот что имеем : некая таблица из 70+ столбцов

имеем table_audit вот с такими столбцами :
table_name //имя таблицы где произошли изменения
column_name // имя столбца
date //дата изменения
oid //id записи
old_value // старое значение
new_value //новое значение
user //кто внес изменение

набрасываю все от руки - чтобы названия были понятны - в реальной таблице руки бы оторвать придумшику имен.

для поставленной задачи получилось вот такое правило

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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
	);




все бы ничего - но как ограничить данную роль только на 1 столбце.. мне не нужно следить за всеми столбцами - а только за определенными - скажем 10 столбцов ..
пробовал в ON UPDATE TO table_1 добавить имя столбца - но был отправлен подальше.
заранее спасибо.

проще (и правильнее) всего - использовать хранимку и триггер вместо rule
заодно не прийдется всем ролям давать доступ на запись в таблицу аудита
...
Рейтинг: 0 / 0
создание роли или тригера для аудита
    #38607265
Славка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я нашел вот такой пример
https://wiki.postgresql.org/wiki/Audit_trigger

но мне не нравится что он сохраняет все данные .. а как сделать чтобы он показывал имя столбца и с чего на что поменялось .. я не знаю..
...
Рейтинг: 0 / 0
создание роли или тригера для аудита
    #38607285
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
Славка, что в вашем понятии "роль"? Если это RULE - не используйте для аудита.
Почему не смотрите примеры ?
Код: plsql
1.
2.
3.
4.
CREATE TRIGGER check_update
    BEFORE UPDATE OF balance ON accounts
    FOR EACH ROW
    EXECUTE PROCEDURE check_account_update();
...
Рейтинг: 0 / 0
создание роли или тригера для аудита
    #38607288
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
Славка... а как сделать чтобы он показывал имя столбца и с чего на что поменялось .. я не знаю..
OLD.column_name + NEW.column_name
...
Рейтинг: 0 / 0
создание роли или тригера для аудита
    #38607421
Славка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно закрываем вопрос - я кажется пойду другим путем - первую часть собрал - завтра буду пробовать все это запустить.
Суть такая - на веб страничке javascript будет говорить какие поля изменены и на основе этого выстраивать запрос.

Спасибо за подсказки.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / создание роли или тригера для аудита
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]