日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 同义词(synonym) 简介

發布時間:2025/3/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 同义词(synonym) 简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從sql server or sybase 轉到oracle既程序猿可能對同義詞這個概念有點陌生.


同義詞不難理解, 只不過是oracle的對象起個別名罷了.


下面介紹下同義詞synonym的用法.


1. 創建同義詞的權限

首先如果1個用戶要創建同義, 前提是他必須具有 create synonym 的權限.

假如我要用scott帳號來建立同義詞, 則必須用sys帳號來給scott分配權限:


SQL> show user; USER is "SYS" SQL> grant create synonym to scott;Grant succeeded.SQL> select * from dba_sys_privs where GRANTEE = 'SCOTT';GRANTEE PRIVILEGE ADM ------------------------------ ---------------------------------------- --- SCOTT CREATE SYNONYM NO SCOTT SELECT ANY DICTIONARY NO SCOTT UNLIMITED TABLESPACE NOSQL>

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.


SQL> conn sys as sysdba; Enter password: Connected. SQL> grant create synonym to bill;Grant succeeded.SQL> conn bill Enter password: ERROR: ORA-28002: the password will expire within 6 daysConnected. SQL> create synonym emp_syn for scott.emp;Synonym created.
很簡單 注意, 對象名帶模式前序.



總結

以上是生活随笔為你收集整理的Oracle 同义词(synonym) 简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。