Oracle 同义词(synonym) 简介
從sql server or sybase 轉到oracle既程序猿可能對同義詞這個概念有點陌生.
同義詞不難理解, 只不過是oracle的對象起個別名罷了.
下面介紹下同義詞synonym的用法.
1. 創建同義詞的權限
首先如果1個用戶要創建同義, 前提是他必須具有 create synonym 的權限.
假如我要用scott帳號來建立同義詞, 則必須用sys帳號來給scott分配權限:
2. 為當前用戶的對象創建同義詞
好了, 這是我們可以用如下語法來創建同義詞
create synonym <syn_name> for <object_name>
來創建一個同義詞.
舉個例子,? 我用scott 帳號 為scott的表EMP 的建1個同義詞:
SQL> show user; USER is "SCOTT" SQL> create synonym emp_syn for EMP;Synonym created.SQL> select * from user_synonyms;SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK ------------------------------ ------------------------------ ------------------------------ -------------------- EMP_SYN SCOTT EMPSQL>
如上面的例子, 建好同義詞, 可以利用試圖 user_synonyms 來查看當前帳號的同義詞.
那么當前帳號就可以利用同義詞 emp_syn 來取代對象名 EMP了.
SQL> desc emp_syn;Name Null? Type----------------------------------------- -------- ----------------------------EMPNO NOT NULL NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATE DATESAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)SQL>
接下來我們嘗試其他帳號, 看看能不能使用這個同義詞.
登陸另1個帳號bill,? bill已經被分配scott.emp? 的select 權限:
SQL> show user; USER is "BILL" SQL> select * from user_tab_privs_recd;OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE ---------- ------------------------------ ------------------------------ ---------------------------------------- --- --- SYS DBA_SOURCE SYS SELECT NO NO SYS USER_SOURCE SCOTT SELECT NO NO SYS USER_TABLES SCOTT SELECT NO NO SCOTT USP_EMP_LIST SCOTT EXECUTE NO NO SCOTT EMP SCOTT SELECT NO NO但是,并不能使用scott 的同義詞 emp_syn
SQL> desc scott.empName Null? Type----------------------------------------- -------- ----------------------------EMPNO NOT NULL NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATE DATESAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)SQL> desc emp_syn; ERROR: ORA-04043: object emp_syn does not existSQL>可見他人并不能使用scott的同義詞.
實際上同義詞不能由所屬用戶分配給他人.
例如當然soctt 執行
grant all on emp_syn to xxx
時, 實際山這句話的emp_syn會被編譯成 EMP, 分配的實際上是表 emp的權限了.
解決方法就是bill 自己也建1個同義詞給scott.emp
3. 給他人對象建立同義詞
接上面, 加入我們要用bill來給scott.emp 建同義詞.
注意權限, 首先我們要為bill 分配 create synonym 的權限, 這個是肯定的了, 其次bill必須要有scott.emp的select 權限. 也就是必須識別scott.emp.
很簡單 注意, 對象名帶模式前序.
總結
以上是生活随笔為你收集整理的Oracle 同义词(synonym) 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 的关联子查询(correl
- 下一篇: oracle pivoting inse