在oracle中,我可以将默认架构与我的用户ID相关联,其中SCHEMA<>用户身份?

时间:2014-06-03 14:44:43

标签: oracle oracle11g

我想用UserId" MY_SCHEMA"连接到Oracle数据库。然后能够执行表名未使用模式名称限定的查询:

SELECT * FROM TABLE1

执行SQL时,我希望我的非限定查询违反我自己的其他模式。换句话说,我希望这相当于

SELECT * FROM SCHEMA_OTHER.TABLE1

而不是

SELECT * FROM MY_SCHEMA.TABLE1

我知道这看起来有点奇怪,所以我希望这是不可能的。

我对数据库没有任何管理权限,以查看我是否可以将默认架构与登录相关联。

1 个答案:

答案 0 :(得分:1)

登录后,您可以运行以下命令:

ALTER SESSION SET CURRENT_SCHEMA=schema_other;

如果您确实希望自动执行此操作,则可以为登录操作创建系统触发器,以查找您的用户名并使用execute immediate运行alter session命令:

CREATE OR REPLACE TRIGGER my_schema_logon
   AFTER LOGON
   ON DATABASE
BEGIN
   IF SYS_CONTEXT ('USERENV', 'CURRENT_USER') = 'MY_SCHEMA' THEN
      EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA=schema_other';
   END IF;
END my_schema_logon;
/