同义词:
对另一个数据对象而言同义词是一个别名,同义词对其目标对象进行依赖,如果目标对象被更改或删除,则该同义词将变为无效。
同义词不能代替数据库对象的特权,即先用对模式的对象有查询、执行、删除等权限。
权限:
要在自己的模式中创建私有同义词,您必须具有CREATE SYNONYM系统特权。
要在另一个用户的模式中创建私有同义词,您必须具有CREATE ANY SYNONYM系统特权。
要创建PUBLIC同义词,您必须具有CREATE PUBLIC SYNONYM系统特权。
表的同义词
CREATE SYNONYM offices FOR hr.locations;
存储过程的同义词
create or replace synonym SP_INSERTXY for ys_adm.SP_INSERTXY;
grant execute on SP_INSERTXY to ys_app
示例:
如果用户oa有 offices表对象,且对hr的offices表有查询权限,那么select * from offices时,查询的是自己的数据。如果要查hr模式,需要select * from hr.offices
如果户oa没有 offices表对象,且对hr的offices表有查询权限,通过创建同义词CREATE SYNONYM offices FOR hr.offices;执行select * from offices;系统返回是hr用户的数据。