powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Нужно передать параметры триггеру
8 сообщений из 8, страница 1 из 1
Нужно передать параметры триггеру
    #34035420
DDT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Ситуация такова:

Есть БД, с которой работают разные пользователи. Они авторизованы каждый под своим логином. При внесении изменений записывается статистика: кто, в какой таблице, какую запись менял.

Сейчас это работает через ХП записи статистики, которой кроме всего прочего передается имя пользователя, который вносил изменения.

Чего хочется:

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

Вопрос:

Можно это как-нибудь осуществить?

Спасибо.
...
Рейтинг: 0 / 0
Нужно передать параметры триггеру
    #34035518
Master Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user - не устроит?
...
Рейтинг: 0 / 0
Нужно передать параметры триггеру
    #34035621
DDT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понимаю, то user - это имя пользователя, который подрубился к серверу БД.

Если так, то это мне не подойдет, т.к. пользователи работают разные а логин для коннекта к БД один.
...
Рейтинг: 0 / 0
Нужно передать параметры триггеру
    #34035683
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Нужно передать параметры триггеру
    #34035696
DDT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shweik ВОт тут это впрос уже был!{FAQ!}

Вопрос был, но так и остался открытым.
Был ответ:
авторСчитаю что не такуж и страшно устроить чтобы приложение
просто _передавало_ серверу логин пользователя.

Так, а дальше как .... где самое интересное?

1. Куда передали логин: в функцию или триггер?
2. Как дальше этот переданный логин использовать. Опять-таки запихнуть в триггер?
...
Рейтинг: 0 / 0
Нужно передать параметры триггеру
    #34036564
Andrew Sagulin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В postgresql.conf описываем класс переменных, которые ходим задействовать для собственных нужд. Пусть это будет custom:

Код: plaintext
custom_variable_classes = 'custom'

Далее, в начале транзакции устанавливаем значение переменной login:

Код: plaintext
1.
2.
3.
start transaction;
set local custom.login=...;
...

В коде триггера переменную можно использовать так:

Код: plaintext
1.
insert into ... (login) values(current_setting('custom.login'));

Подробности здесь:
17.14. Customized Options
9.20. System Administration Functions
...
Рейтинг: 0 / 0
Нужно передать параметры триггеру
    #34036595
DDT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew SagulinВ postgresql.conf описываем класс переменных, которые ходим задействовать для собственных нужд. Пусть это будет custom:

Код: plaintext
custom_variable_classes = 'custom'

Далее, в начале транзакции устанавливаем значение переменной login:

Код: plaintext
1.
2.
3.
start transaction;
set local custom.login=...;
...

В коде триггера переменную можно использовать так:

Код: plaintext
1.
insert into ... (login) values(current_setting('custom.login'));

Подробности здесь:
17.14. Customized Options
9.20. System Administration Functions


Спасибо. Попробую.
...
Рейтинг: 0 / 0
Нужно передать параметры триггеру
    #34043180
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDTЧего хочется:
... Но вот в этом случае не удается передать имя пользователя триггеру.

Вопрос:

Можно это как-нибудь осуществить?

Можно посмотреть ещё сюда и обратить внимание на:
Код: plaintext
1.
2.
3.
4.
5.
6.
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. 
.

Но один хрен придётся наверняка применять способ описанный Andrew Sagulin:
Andrew SagulinВ postgresql.conf описываем класс переменных, которые ходим задействовать для собственных нужд. Пусть это будет custom:
custom_variable_classes = 'custom'
Далее, в начале транзакции устанавливаем значение переменной login:
start transaction;
set local custom.login=...;
....

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


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