我正在具有多个架构(用户)的数据库中工作-在SQL DEVELOPER(ORACLE)中
我想最初为查询设置一个架构,这样就无需在写入查询的每个表之前都包括架构名称。
寻找:
USE SCHEMA_NAME;
SELECT * FROM TABLE;
Run Code Online (Sandbox Code Playgroud)
代替:
SELECT * FROM SCHEMA_NAME.TABLE;
Run Code Online (Sandbox Code Playgroud)
我们可以使用设置不同的默认架构alter session:
alter session set current_schema = SCOTT;
Run Code Online (Sandbox Code Playgroud)
这意味着我们可以在SCOTT模式中引用对象,而无需在对象前加上SCOTT。也就是说,scott.emp我们不能只是:
select * from emp;
Run Code Online (Sandbox Code Playgroud)
注意,我们现在需要在我们自己的模式中为对象添加前缀:
select * from my.table_1;
Run Code Online (Sandbox Code Playgroud)
另外,在不清楚的情况下,设置current_schema不会授予任何特权:如果SCOTT尚未向我们授予EMP上的INSERT或SALGRADE上的SELECT权限,我们将无法使用此技术来获得提升的访问权限。