В базе данных Oracle существуют различия между следующими:
- пользователь()
- sys_context ('USERENV', 'CURRENT_USER')
- sys_context ('USERENV', 'SESSION_USER')
Являются ли они также связанными значениями с любым "текущим пользователем"?
- sys_context ('USERENV', 'CURRENT_SCHEMA')
- sys_context ('USERENV', 'AUTHENTICATED_IDENTITY')
Мне особенно интересно, какие из них могут измениться, что их изменить, какие из них не могут изменить значение, какие из них имеют разные значения на основе типа подключения, а какие() всегда являются схемой, используемой для войдите в базу данных.
В большинстве моих тестов значения всегда одинаковы. Единственное исключение было бы при выполнении следующего для изменения "CURRENT_SCHEMA":
alter session set current_schema=<SCHEMA>
Выполнение следующих результатов при ошибке:
alter session set current_user=<USER> --even as sys/system, which is good I suppose
Итак, во всем этом есть какие-то правила безопасности/правила. Однако должна быть какая-то причина наличия SESSION_USER и CURRENT_USER. Я также предполагаю, что user() может быть ярлыком для sys_context ('USERENV', 'CURRENT_USER'), но я не мог найти документацию по этому вопросу.