способ передачи дополнительного значения из серверного кода в триггер? Конкретно - нужно передавать имя юзера для записи в таблицу аудита
Я лично хорошего способа не знаю. Есть custom session variables, но у них проблемы с транзакционностью. Можно "запилить" свои функции вроде set_session_var / get_session_var на PL/что-нибудь (у чего есть session-wide state, например pl/tcl или pl/perl) — но придётся ставить этот язык, и интерпретатор грузится в каждую сессию. Может, в сторонних расширениях что-то есть, не искали?
ставить стороннее не хотелось бы :(
https://postgrespro.ru/docs/postgresql/13/functions-info current_user - вполне себе, если пользователь - пользователь СУБД.
Если придумаете что-то получше перечисленного, хоть расскажите... Может, Вы уже какие-то другие варианты рассматривали?
А я сразу подумал, что это что-то "левое". ;) Если что-то встроенное, то тут всё просто, да.
Но, я повторюсь, эта функция работает, если нужный пользователь является пользователем СУБД. Когда пользователь - только пользователь приклада, и хранится только в отдельной таблице соответствующей БД, надо колхозить с установкой сессионных переменных и использовать эти переменные в триггере (первое, что приходит в голову).
нет, юзер на уровне API нашего продукта, для постгреса это просто строка
Тогда колхозить с установкой сессионных переменных, как минимум. Увы.
Обсуждают сегодня