2010-01-13 56 views
0

我有一個構建在來自不同用戶架構的多個表上的視圖。憑藉當前登錄的用戶,他可以從不同的模式查看錶格。在創建視圖時,表名變得模糊不清,因爲用戶可以從不同的模式訪問相同的表。 有什麼方法可以指定在創建視圖時使用當前用戶模式中的表? 我們可以從視圖定義中的其中一個表執行此操作,而可以從任何模式中選擇其他表嗎?查看來自多個用戶架構的表

回答

1

您應該能夠通過爲模式名稱加前綴來訪問模式(具有正確的權限)。

schemaname.tablename 

希望我正確理解你的問題。

2

「當創建視圖中的表名稱 變得模糊作爲用戶 具有從 不同架構訪問相同的表」

它不是模棱兩可到Oracle。

視圖存在於模式SCHEMA_1中。如果該視圖引用了對象TABLE_A,則Oracle將首先在SCHEMA_1中查找對象TABLE_A。如果它找到一個表,它將使用它。如果它找到SYNONYM,它將使用任何同義詞指向的內容。如果SCHEMA_1中沒有任何內容,它將查找TABLE_A的PUBLIC SYNONYM並使用它指向的任何內容。

SYNONYMS可以指向其他同義詞,視圖或表格。

您可以查詢USER_DEPENDENCIES以查看視圖實際上基於哪些對象。

如果從SCHEMA_2查詢,則SCHEMA_1中使用TABLE_A的視圖不能在SCHEMA_2中查看,但如果從SCHEMA_3查詢,則使用SCHEMA_3中的不同TABLE_A。