我试图为sh架构中的表创建别名,我选择了特权,我的架构是cs1761xx。我试图在这些表上选择特权,而不必在序言sh.xxxx之前。我该怎么做呢?我的模式是cs1761xx,我也不想创建新用户。
SQL> create synonym customers1 for sh.customers;
create synonym customers1 for sh.customers
*
ERROR at line 1:
ORA-01031: insufficient privileges
答案 0 :(得分:1)
如果您的DBA不会授予您创建同义词所需的权限,这是一个课程作业,指的是“别名”,而不是专门用于同义词,而您只需要查询表格......然后另一个选项是改为创建一个视图:
create view customers as select * from sh.customers;
当然,假设你有权利这样做。相反,它更像是“别名”的含义。 (你也可以插入,更新和删除,但需要一个替代触发器;但这似乎超出了范围。)
答案 1 :(得分:1)
使用alter session set current_schema = sh;
以避免必须在模式名称前加上:
SQL> select count(*) from customers;
select count(*) from customers
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> alter session set current_schema = sh;
Session altered.
SQL> select count(*) from customers;
COUNT(*)
----------
0
SQL>