2017-09-06 51 views
0

我需要在模式中維護的所有關係的列表。列出視圖和表之間的所有關係

我推導出下面的查詢,但它只能顯示tabletable關係,我不知道從哪裏應該得到tableviewviewview關係信息從

SELECT main.table_name parent, par_col.COLUMN_NAME par_column, 
    link.table_name child,link_col.COLUMN_NAME child_column 
FROM user_constraints main, user_constraints link, 
user_cons_columns par_col, user_cons_columns link_col 
WHERE main.constraint_type IN ('P', 'U') 
AND link.r_constraint_name = main.constraint_name 
and main.constraint_name = par_col.CONSTRAINT_NAME 
and link.r_constraint_name = link_col.CONSTRAINT_NAME 
and main.owner = '<schema_name>' 
ORDER BY main.table_name, link.table_name; 

謝謝

+0

你是什麼意思的表查看關係?您不能創建完整性約束引用來查看。 –

回答

1

這將幫助您(在T-SQL中):

SELECT 
    FrK.name 'FK Name', 
    tp.name 'Main_Parent table', 
    cp.name, cp.column_id, 
    tr.name 'Referenced to', 
    cr.name, cr.column_id 
FROM 
    sys.foreign_keys FrK 
INNER JOIN 
    sys.tables tp ON FrK.parent_object_id = tp.object_id 
INNER JOIN 
    sys.tables tr ON FrK.referenced_object_id = tr.object_id 
INNER JOIN 
    sys.foreign_key_columns fkc ON fkc.constraint_object_id = FrK.object_id 
INNER JOIN 
    sys.columns cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id 
INNER JOIN 
    sys.columns cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id 

對於Oracle檢查這一個:

select table_name 
from all_constraints 
where constraint_type='R' 
    and r_constraint_name in (select constraint_name 
          from all_constraints 
          where constraint_type in ('P','U') 
           and table_name='<your table here>'); 
+0

它不會爲oracle db –

+0

添加爲oracle,也 – Suleymani

+0

我有這個查詢,請看看我的問題(甚至更好的版本)。問題是沒有包含視圖。 –