2015-06-11 38 views
1

可以說,我有一個架構「SCHEMA_1」,在此之下我有一個對象「EMP_TBL_Schema_1」。現在我想通過另一個架構「SCHEMA_2」來訪問這個表。只有這個「SCHEMA_2」應該能夠訪問這個表格(除了「SCHEMA_1」之外,沒有任何其他的數據庫模式)。所以在這種情況下,適當的,公共同義詞或私人同義詞。我很困惑。 據我所知,私人同義詞是由它的所有者Schema創建的,是否有可能「SCHEMA_2」可以通過自己爲「SCHEMA_1」中存在的對象創建私有同義詞來使用。我們可以在其他架構中爲其對象處於不同架構中的其他架構創建私有同義詞

通過代碼的解釋將不勝感激。

回答

1

SCHEMA_2應該創建一個私有同義詞:

create synonym emp_tbl_schema_1 for schema_1.emp_tbl_schema_1 
/

注意同義詞可以是任何有效的名稱:它不具有匹配表在SCHEMA_1名。 Find out more

另請注意,創建同義詞僅僅是使DML更易於編寫的便利之處。它沒有授予引用對象的任何權利。 SCHEMA_1必須授予SCHEMA_2權限。這將授予選擇和插入:

SQL> conn SCHEMA_1/password 
SQL> grant select, insert on emp_tbl_schema_1 to schema_2; 

這使得SCHEMA_2查詢表,插入新記錄,但不更新或刪除現有的。顯然,GRANT命令完全覆蓋了in the documentation

最後,爲了解決您的困惑,公共同義詞很少適用於應用程序對象。爲大多數或所有用戶廣泛使用的實用程序對象創建它們。否則,模式應該爲他們使用的對象創建私有同義詞。

+0

非常感謝@APC。你的答案是完美的,並解決我的問題。 –

+0

你能不能請你在這種情況下給我授予命令。這將清除我所有的疑慮。 TIA –

+0

感謝您的有用信息。 –

相關問題