Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Свой "current_user"?.. / 10 сообщений из 10, страница 1 из 1
22.08.2018, 18:37
    #39691994
___Nikolay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
Помогите, пожалуйста!

В базе данных создан только один логин .
"Пользовательские логины" для входа в программу различаются лишь на уровне таблички "Пользователи", куда внесено имя и выдуманный пользовательский логин.
Как можно в триггере распознавать, какой именно пользователь сейчас работает? Создать что-то вроде своего current_user, но чтобы в нем был выдуманный логин.

Через current_connection не получится, так как к базе подключена только программа-сервер, она обрабатывает обращения всех пользователей и соединение к базе по-сути одно.

Может как-то хитро переменную выставлять через rdb$set_context? Но только тогда пространство имен системное SYSTEM нельзя использовать, а при переподключении к базе переменные исчезают.

Как быть? Может кто сталкивался?
...
Рейтинг: 0 / 0
22.08.2018, 18:42
    #39691996
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
___Nikolayпри переподключении к базе переменные исчезают.

Значит при переподключении к базе надо заново им присвоить значения. В чём проблема-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.08.2018, 19:08
    #39692004
___Nikolay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
Dimitry Sibiryakov, спасибо, попробую!
...
Рейтинг: 0 / 0
22.08.2018, 21:45
    #39692034
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
___Nikolayона обрабатывает обращения всех пользователей и соединение к базе по-сути одно
тогда имя пользователя в триггер никак не передать. Ведь разные пользователи работают в одном коннекте, а значит какая-то context-переменная постоянно будет меняться.
Или коннекты все-таки разные? Иначе что это за система-то, где всё упирается в один коннект?
...
Рейтинг: 0 / 0
23.08.2018, 07:31
    #39692121
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
___NikolayЧерез current_connection не получится, так как к базе подключена только программа-сервер, она обрабатывает обращения всех пользователей и соединение к базе по-сути одно.
ну так может и не надо перекладывать эти проблемы на субд, а решать на уровне сервиса?
...
Рейтинг: 0 / 0
23.08.2018, 09:57
    #39692194
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
___Nikolay,

web? Если да, то для хранения сессионных переменных там обычно используют http сессии которые к БД прямого отношения не имеют. Грубо говоря в web чем меньше лишний раз обращаешься к БД (подключаешься) тем лучше.
...
Рейтинг: 0 / 0
23.08.2018, 14:22
    #39692432
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
Помимо перечисленного, можно также применить подход а-ля Дельфийские методы объекта - первым параметром передавать UserID (как Self).
...
Рейтинг: 0 / 0
23.08.2018, 14:29
    #39692440
AltHasp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
Можно ещё
при подключении занести user_id в поле таблицы GTT (PRESERVE ROWS) а далее сделать ссылку на неё в объектах (SP,triggers etc).
...
Рейтинг: 0 / 0
23.08.2018, 14:59
    #39692471
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
AltHasp,

это мало чем отличается от контекстных переменных, которые у автора пропадают, потому что соединения с БД не постоянное.
...
Рейтинг: 0 / 0
23.08.2018, 22:57
    #39692696
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой "current_user"?..
Симонов Денис,
у меня 100 лет назад было приложение, в котором user_name передавалось в процедуру. И любые действия с БД производились только процедурами. Поэтому с пониманием user_name никогда проблем не было.
У автора проблема проектирования, он, видимо, еще не решил, что делать, но уже из веба или трехзвенки у него в базу лезет только один юзер. И, внезапно, надо чтобы юзер этот "различался" в триггере. Так вот, в ТРИГГЕРЕ он НИКАК различаться не сможет, если только в изменяемой таблице нет столбца "имя юзера" или типа того.
Так что, не надо людям давать несбыточные надежды :-) Если они себе сами устроили геморрой, так пусть с ним и борются.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Свой "current_user"?.. / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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