2012-09-11 53 views
0

主鍵列有沒有辦法以檢索視圖列表與主鍵列名一起,如果這一觀點與相關表的主鍵列上創建獲取的觀點

由於提前

+0

我不確定我是否按照這個問題。一個視圖通常沒有主鍵(它可以,但必須是一個DISABLE NOVALIDATE約束)。視圖所基於的一個或多個表通常將具有主鍵。你在問如何確定視圖中引用的表的主鍵列是什麼?你在問如何確定視圖的主鍵列是什麼?或者你在問別的嗎? –

+0

是的,你說得對。視圖沒有主鍵列。讓我問一個樣品 – Manikandan

+0

對不起,我發表評論沒有完成。表 - 員工(ID主鍵,名字,姓氏,薪水,部門)視圖是從員工表創建的。 EMPLOYEEVIEW(ID,名字,姓氏),EMPLOYEEVIEW滿足我的約束。我需要得到這些觀點。我期望結果視圖名稱和列名稱是引用表員工的主鍵。這裏的結果EMPLOYEEVIEW ID – Manikandan

回答

1

要獲取主鍵在當前模式中的表的約束,你可以使用此查詢:

select * 
from user_constraints 
where constraint_type = 'P' 

所以搜索您的主鍵視圖我會使用一個這樣的查詢

select * 
from user_views v 
join user_constraints c on upper(v.text) like '%'||c.table_name||'%' 
where c.constraint_type = 'P' 
and v.view_name = 'YOUR_VIEW_NAME' 

不幸的是,user_views視圖中的文本字段是可怕的數據類型LONG,因此您將需要創建自己的函數(or google one)將LONG轉換爲VARCHAR,因此您可以使用upper()等。