powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Индефикация пользователя в триггерах...
7 сообщений из 7, страница 1 из 1
Индефикация пользователя в триггерах...
    #39297575
Fofanov_Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можно индефицировать пользователя, который своим SQL запросом дернул цепочку триггеров?
Пользователя необходимо определить внутри сработавшего триггера...
...
Рейтинг: 0 / 0
Индефикация пользователя в триггерах...
    #39297576
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Индефикация пользователя в триггерах...
    #39297632
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fofanov_Alexey,

Код: plsql
1.
2.
3.
4.
-- проверить условие, что пользователь именно тот
IF (CURRENT_USER = 'MYUSER') THEN 
-- записать это в лог
   INSERT INTO MYLOGTABLE(USERNAME) VALUES (CURRENT_USER);
...
Рейтинг: 0 / 0
Индефикация пользователя в триггерах...
    #39297650
Fofanov_Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMasterFofanov_Alexey,

Код: plsql
1.
2.
3.
4.
-- проверить условие, что пользователь именно тот
IF (CURRENT_USER = 'MYUSER') THEN 
-- записать это в лог
   INSERT INTO MYLOGTABLE(USERNAME) VALUES (CURRENT_USER);



Засада в том, что все подключения к базе идут от одного пользователя, и бываем так, что запускают несколько приложений на одном рабочем месте.

В базе есть своя таблица с пользователями, через которую происходит авторизация в программе, и нужно опознавать, кто что делал.

Думал зацепиться за ATTACHMENT_ID, но гляжу, что программа может порождать несколько подключений к базе.
...
Рейтинг: 0 / 0
Индефикация пользователя в триггерах...
    #39297658
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fofanov_AlexeyЗасада в том, что все подключения к базе идут от одного пользователя, и бываем так, что запускают несколько приложений на одном рабочем месте.


Ну тогда тебе сразу после коннекта следует сделать примерно следующее:
- определится, что ж это за пользователь зашел - т.е. вытащить из твоей таблицы авторизации имя пользователя
- установить контекстную переменную через RDB$SET_CONTEXT, в которую записать своего пользователя
- в триггерах использовать RDB$GET_CONTEXT вместо CURRENT_USER
...
Рейтинг: 0 / 0
Индефикация пользователя в триггерах...
    #39297660
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fofanov_AlexeyЗасада в том, что все подключения к базе идут от одного пользователя...

В базе есть своя таблица с пользователями, через которую происходит авторизация в программе, и нужно опознавать, кто что делал.


В своей процедуре авторизации заполняй контекстную переменную
Код: sql
1.
rdb$set_context('USER_SESSION', 'USER_ID', :USER_ID);


Далее в триггере можно либо дополучить атрибуты возможностей пользователя.
Если критично к скорости, то сразу в ещё одну переменную выставляй нужный атрибут.
...
Рейтинг: 0 / 0
Индефикация пользователя в триггерах...
    #39297740
Fofanov_Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, усе работает как часы! :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Индефикация пользователя в триггерах...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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