powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Собрать максимально информацию в триггере.
16 сообщений из 16, страница 1 из 1
Собрать максимально информацию в триггере.
    #39463776
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, нужно собирать инфу по изменению таблицы.

И собрать максимальную информацию, кто изменил, какое приложение, какой ip и тп...

Подскажите пожалуйста как эту информацию (кто изменил, какое приложение, какой ip и тп) добыть.
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39463789
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и в принципе возможно ли это?

В мс скл возможно, например.
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39463804
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока не нашел как это сделать
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39463818
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только это нашел:

When a PL/pgSQL function is called as a trigger, several special variables are created automatically in the top-level block. They are:

NEW

Data type RECORD; variable holding the new database row for INSERT/UPDATE operations in row-level triggers. This variable is NULL in statement-level triggers.
OLD

Data type RECORD; variable holding the old database row for UPDATE/DELETE operations in row-level triggers. This variable is NULL in statement-level triggers.
TG_NAME

Data type name; variable that contains the name of the trigger actually fired.
TG_WHEN

Data type text; a string of either BEFORE or AFTER depending on the trigger's definition.
TG_LEVEL

Data type text; a string of either ROW or STATEMENT depending on the trigger's definition.
TG_OP

Data type text; a string of INSERT, UPDATE, or DELETE telling for which operation the trigger was fired.
TG_RELID

Data type oid; the object ID of the table that caused the trigger invocation.
TG_RELNAME

Data type name; the name of the table that caused the trigger invocation.
TG_NARGS

Data type integer; the number of arguments given to the trigger procedure in the CREATE TRIGGER statement.
TG_ARGV[]

Data type array of text; the arguments from the CREATE TRIGGER statement. The index counts from 0. Invalid indices (less than 0 or greater than or equal to tg_nargs) result in a null value.




Но это не то.
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39463854
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели постгрес так не может делать? :(
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39463860
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39463975
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39463977
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBat,

Скажите, в триггере SELECT inet_client_addr() должен вернуть адрес того, кто изменяет стороки?



Просто у меня в пг-админе не пойму что он возвращает, не мой IP точно.
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39463978
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и приложение очень хочется отловить триггером.
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39464001
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то никак не найду как запросом получить название клиентского приложения

Постгре 8
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39464004
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
камаз5320,

select current_setting('application_name');

Чтобы это работало, клиентское приложение при старте должно выставить:
set application_name = 'имя приложения';
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39464008
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Лузановкамаз5320,

select current_setting('application_name');

Чтобы это работало, клиентское приложение при старте должно выставить:
set application_name = 'имя приложения';

Спасибо!

В 9.5 работает нормально.



Однако в 8-й версии:

Код: sql
1.
2.
3.
4.
5.
ERROR:  unrecognized configuration parameter "application_name"
********** Ошибка **********

ERROR: unrecognized configuration parameter "application_name"
SQL-состояние: 42704





Как бы в 8-й версии отловить его?...
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39464014
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
камаз5320,

Ну сделайте пользовательский параметр (должна быть точка в имени):
set myapp.name = 'имя приложения';
select current_setting('myapp.name');
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39464016
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
камаз5320Павел Лузановкамаз5320,

select current_setting('application_name');

Чтобы это работало, клиентское приложение при старте должно выставить:
set application_name = 'имя приложения';

Спасибо!

В 9.5 работает нормально.



Однако в 8-й версии:

Код: sql
1.
2.
3.
4.
5.
ERROR:  unrecognized configuration parameter "application_name"
********** Ошибка **********

ERROR: unrecognized configuration parameter "application_name"
SQL-состояние: 42704





Как бы в 8-й версии отловить его?...


1)в 8 версии такого параметра нет
2)если приложение у вас не самописное то 99% что "application_name" оно не ставит (и без переписывания ставить не будет).
(т.е. параметр на новых версиях то есть но если ПРИЛОЖЕНИЕ его не ставит - толку ноль).
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39464017
камаз5320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Bogukкамаз5320пропущено...


Спасибо!

В 9.5 работает нормально.



Однако в 8-й версии:

Код: sql
1.
2.
3.
4.
5.
ERROR:  unrecognized configuration parameter "application_name"
********** Ошибка **********

ERROR: unrecognized configuration parameter "application_name"
SQL-состояние: 42704







Как бы в 8-й версии отловить его?...


1)в 8 версии такого параметра нет
2)если приложение у вас не самописное то 99% что "application_name" оно не ставит (и без переписывания ставить не будет).
(т.е. параметр на новых версиях то есть но если ПРИЛОЖЕНИЕ его не ставит - толку ноль).





Получается

select current_setting('application_name');

Просто берет информацию из:
SELECT * FROM pg_settings WHERE name='application_name'






А на 8-ке в принципе нельзя имя приложения в триггер записать?
...
Рейтинг: 0 / 0
Собрать максимально информацию в триггере.
    #39464316
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
камаз5320А на 8-ке в принципе нельзя имя приложения в триггер записать?

Последняя 8рка (8.4) EOL 3 года назад!!!! ( July 2014)
Если вам нечего делать - возьмите исходники и внесите туда поддержку application_name из новых версий.

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


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