172 похожих чатов

Добрый день, подскажите, есть ли в последних версиях постгреса хороший

способ передачи дополнительного значения из серверного кода в триггер? Конкретно - нужно передавать имя юзера для записи в таблицу аудита

8 ответов

11 просмотров

Я лично хорошего способа не знаю. Есть custom session variables, но у них проблемы с транзакционностью. Можно "запилить" свои функции вроде set_session_var / get_session_var на PL/что-нибудь (у чего есть session-wide state, например pl/tcl или pl/perl) — но придётся ставить этот язык, и интерпретатор грузится в каждую сессию. Может, в сторонних расширениях что-то есть, не искали?

Dmitry-B. Автор вопроса

https://postgrespro.ru/docs/postgresql/13/functions-info current_user - вполне себе, если пользователь - пользователь СУБД.

Dmitry B.
ставить стороннее не хотелось бы :(

Если придумаете что-то получше перечисленного, хоть расскажите... Может, Вы уже какие-то другие варианты рассматривали?

Михаил Шурутов
https://postgrespro.ru/docs/postgresql/13/function...

А я сразу подумал, что это что-то "левое". ;) Если что-то встроенное, то тут всё просто, да.

Yaroslav Schekin
А я сразу подумал, что это что-то "левое". ;) Если...

Но, я повторюсь, эта функция работает, если нужный пользователь является пользователем СУБД. Когда пользователь - только пользователь приклада, и хранится только в отдельной таблице соответствующей БД, надо колхозить с установкой сессионных переменных и использовать эти переменные в триггере (первое, что приходит в голову).

Dmitry-B. Автор вопроса
Михаил Шурутов
https://postgrespro.ru/docs/postgresql/13/function...

нет, юзер на уровне API нашего продукта, для постгреса это просто строка

Dmitry B.
нет, юзер на уровне API нашего продукта, для постг...

Тогда колхозить с установкой сессионных переменных, как минимум. Увы.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта