Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Нужно передать параметры триггеру / 8 сообщений из 8, страница 1 из 1
05.10.2006, 16:40
    #34035420
DDT
DDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно передать параметры триггеру
Привет.

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

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

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

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

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

Вопрос:

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

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

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

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

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

1. Куда передали логин: в функцию или триггер?
2. Как дальше этот переданный логин использовать. Опять-таки запихнуть в триггер?
...
Рейтинг: 0 / 0
06.10.2006, 09:25
    #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
06.10.2006, 09:33
    #34036595
DDT
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
10.10.2006, 08:20
    #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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Нужно передать параметры триггеру / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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