假设我的部门架构中有员工表,并且我想授权销售部门从中选择数据。在这种情况下,同义词的重要性是什么,因为我可以通过向特定用户组授予权限来实现。
答案 0 :(得分: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;
他会得到结果。
但是,在引用department
表的每个查询中为employees
模式名称添加前缀是一种开销,大多数开发人员都不会喜欢这样做。这就是同义词的帮助。
department
用户通过以下语句为department.employees
创建同义词
create public synonym employees for department.employees
然后sales
用户就可以在employees
表上运行select查询,而不会在架构名称前加上department
注意:
public
同义词。如果省略同义词创建语句中的public
,则同义词对于模式是私有的。但是,同义词和表名不能相同。