您好:
請問
PUBLIC 修飾字:建立所有使用者皆可存取的 SYNONYM
我實際測試如下
1.有PUBLIC ,並給 U01 select SYNONYM的權限
create PUBLIC SYNONYM e2 for AA.emp2;
grant select on e2 to u01;
select * from AA.emp2; ==>OK
select * from e2; ==>OK
----
2.沒 PUBLIC ,並給 U01 select SYNONYM的權限
create SYNONYM e2 for AA.emp2;
grant select on e2 to u01;
select * from AA.emp2; ==>OK
select * from e2; ==>表格不存在
請問PUBLIC 不是 所有使用者皆可存 嗎?
為何還要 授權才可用?
還是他只是:說這一個 同義字,可以公開給所有人用,但要授權才真正可用。
而(2)中,為何 授權給 u01,
但SYNONYM 無法讀取, 原本的基礎TABLE AA.emp2,卻可讀取。
謝謝!
------解决思路----------------------
就算是public,用户也需要有对public的访问权限,
第二种情况,由于是私有同义词,访问时需要在同义词前加user,如:如果该同义词是user01的,那么应该为
select * from user01.e2
因为如果不加用户名做前缀,就会去在当前用户的对象,但是没有改对象。so....
------解决思路----------------------
私有同义词只有用户本身可以访问,当然你也可以显示授权别的用户访问
授权用户在访问时要加上模式名如:
select * from 用户名.e2