[closed] [PostgreSQL] получить текущий session id

Sharp

Не могу понять как.
В документации нашел, что его можно печатать в логах, но как его получить в SQL команде нигде не вижу.
Может кто сталкивался с такой проблемой?

pitrik2

а зачем это может быть нужно?

Sharp

Есть много пользователей, которые хранятся где-то не в Postgres-е. К базе они, соответственно, соеденяются под некоторым псевдо-пользователем, и в момент соединения как параметр передают свой логин.
Требуется весть логи их действий.
Пока идея такая — в момент соединенния записывается в некоторую табличку соответствие session_id <=> имя_пользователя. И в логах уже указывать session_id.

pitrik2

а ничего что этот session id может быть одинаковым у двух разных пользователей?
1) коннектится первый получает session id
2) дисконенктитья первый, session id теперь не занятый
3) коннектится второй и получает тот же session id

pitrik2

в момент соединения как параметр передают свой логин
а как это делается?

Sharp

вот как раз и хочется, чтобы это был некоторый внутренний уникальный session_id

Sharp

Например, просто дописывают его в некоторую таблицу. Ну или вызывают сохраненную процедуру на сервере, которая все это сохранит.
А дальше перед всеми insert-ами и update-ами будет стоять триггер, что если такого session_id в таблице нет, то все действия сразу же отменяются.

pitrik2

в оракле можно создать пакет package
в него положить переменную - как раз твой логин
и она в пределах сессии будет тама лежать
нет чегонить такого в постгресе?
- глобальной переменной на сессию
- временной таблицы на сессию
- ...

pitrik2

ну да
оно и есть
http://pgsqld.active-venture.com/sql-createtable.html
If specified, the table is created as a temporary table. Temporary tables are automatically dropped at the end of a session.
тоесть ты при первом образении создаешь временную таблицу
кладешь туды логин
при следующих обращениях смотришь создана ли временная таблица, если нет - то посылаешь чувака нах

Sharp

Спасиб. Решил создавать временные таблицы.
Оставить комментарий
Имя или ник:
Комментарий: