windsky 2011-08-17
项目中遇到,遂从网上搜索了下,觉得如下解释较为通俗易懂:
假设oracle有以下两个用户: admin , visitor 我们在admin下建立了 testtable 这个表,并且对visitor用户赋权 然后我们用visitor登陆 : 查询这个表的时候我们一定需要这样写 select * from admin.testtable 如果直接写 select * from testtable oracle会报错说表不存在 但是我们可以在visitor里建立[私有同义词] 让 testtable = admin.testtable 这样在visitor下就可以直接输入 select * from testtable进行查询 但是如果用户很多的情况下会觉得很麻烦,因为每个用户都需要加[私有同义词] testtable=admin.testtable 所以就出现了 [公有同义词] 直接在admin用户下建立公有同义词 testtable = testtable 这样做好后,所有的用户都可以直接使用 select * from testtable 进行访问而并不需要加前缀,也不用再加[私有同义词]了
项目中例子:
oracle 用户 infsa 下 有表 a,把权限赋给infss用户
在infsa下执行
grant all on a to infss ;
create public synonym inf for a;