1
假设我的部门架构中有雇员表,并且我想授权销售部门从中选择数据。在这种情况下同义词的重要性是什么,因为我可以通过向特定用户授予许可来实现。同义词的重要性而不是授予对象的访问权限
假设我的部门架构中有雇员表,并且我想授权销售部门从中选择数据。在这种情况下同义词的重要性是什么,因为我可以通过向特定用户授予许可来实现。同义词的重要性而不是授予对象的访问权限
考虑department.employees
是你的表格。
而且您已通过执行部门架构中的以下语句将用户的选择权限授予sales
用户。
grant select on employees to sales;
此声明仅给予用户/模式sales
的选择权限。
但是,当用户sales
尝试执行以下语句,
select * from employees;
他会得到下面的错误,
ERROR at line 1:
ORA-00942: table or view does not exist
因为,employees
表中不存在sales
架构。它在department
模式。
如果用户sales
尝试执行以下语句来代替,
select * from department.employees;
,他将获得满意的结果。
但是,在每个引用employees
表的查询中加上department
模式名称的前缀是开销,大多数开发人员不会理解这样做。这就是同义词来帮助的地方。
department
用户通过下面的语句创建为department.employees
的代名词
create public synonym employees for department.employees
然后sales
用户将能够在不加前缀的架构名称department
注意运行employees
表的SELECT查询:
public
的同义词。如果从同义词创建语句中省略public
,则同义词对于该模式是私有的。但是,同义词和表名不能相同。
感谢您给我简单的解释 – Pratsam 2014-11-03 09:39:12