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')へのショートカットである可能性があると思いますが、この問題に関するドキュメントは見つかりませんでした。