Oracle同義詞從字面上理解就是別名的意思,和視圖的功能類似,就是一種映射關系。在Oracle中對用戶的管理是使用權限的方式來管理的,也就是說,如果我們想使用數據庫,我們就必須得有權限,但是如果是別人將權限授予了我們,我們也是能對數據庫進行操作的,但是我們必須要已授權的表的名稱前鍵入該表所有者的名稱,如bsrun.doctor_info,所以這比較麻煩,遇到這種情況,我們該怎么辦呢?創建個同義詞吧!這樣我們就可以直接使用同義詞來使用表了。
1、 如果我們要將bsrun用戶的所有對象都創建一個同義詞,則可以這樣寫:
select ' create synonym ' || OBJECT_NAME ||' for bsrun.'||OBJECT_NAME||';'
from user_objects where object_type in('TABLE','VIEW','PROCEDURE','TRIGGER','FUNCTION','PACKAGE');
將以上語句取得的結果集,在PL/SQL工具中執行就可以了,以上創建的是私有同義詞,即只有創建者才能訪問。
以下語句則是創建公有同義詞,所有有權限的用戶都能訪問:
select ' create public synonym ' || OBJECT_NAME ||' for bsrun.'||OBJECT_NAME||';'
from user_objects where object_type in('TABLE','VIEW','PROCEDURE','TRIGGER','FUNCTION','PACKAGE');
2、刪除同義詞:
DROP SYNONYM emp; --刪除名為emp 的私有同義詞
DROP PUBLIC SYNONYM public_emp; --刪除名為public_emp的公有同義詞
新聞熱點
疑難解答