2011-12-09 42 views
2

是否可以使用SQL查詢查找外鍵關係?使用SQL查詢查找外鍵關係

該數據庫在我的外部,我無法直接訪問它以查看通過Server Management Studio的鏈接。

+0

查找元數據對於您的RDBMS非常具體。你使用什麼數據庫引擎? – dasblinkenlight

+0

我不確定,但我認爲它是SQL Server 2008如果有幫助 – user1076439

+0

嘗試在您想要探索的關係表上運行名爲'sp_help'的存儲過程,如下所示:'sp_help my_table'。您應該返回描述該表的七個結果集。最後一個應該有關於表的外鍵的信息。 – dasblinkenlight

回答

-2

不,你不能,

但是你可以手動檢查,很繁瑣,你需要查詢每個表和檢查什麼是列[ID的]存在於每個不同的表。看看它的關係。

問候

+0

感謝您告訴我,數據庫包含560個表格,所以我可能會給它一個錯過! – user1076439

+0

如果你可以訪問你的sql管理工作室中的服務器,並且你可以使用視圖來查看你正在訪問的數據庫中所有表的關係,那就好多了。 – BizApps

2

要查找有關外鍵,請考慮使用這些系統的觀點:

sys.sysconstraints 
sys.columns 
sys.tables 

可以聯接colid,COLUMN_ID這三個觀點,OBJECT_ID獲得有關外鍵約束的完整信息。

這些觀點應該是SQL Server 2005+

7

要檢索外鍵的列表,你可以運行此查詢:

SELECT t.name AS FKTableName 
    , fk.name AS NameOfForeignKey 
    , pc.name AS FKColumn 
    , rt.name AS ReferencedTable 
    , c.name AS ReferencedColumn 
FROM sys.foreign_key_columns AS fkc 
INNER JOIN sys.foreign_keys AS fk ON fkc.constraint_object_id = fk.object_id 
INNER JOIN sys.tables AS t ON fkc.parent_object_id = t.object_id 
INNER JOIN sys.tables AS rt ON fkc.referenced_object_id = rt.object_id 
INNER JOIN sys.columns AS pc ON fkc.parent_object_id = pc.object_id 
    AND fkc.parent_column_id = pc.column_id 
INNER JOIN sys.columns AS c ON fkc.referenced_object_id = c.object_id 
    AND fkc.referenced_column_id = c.column_id 

,如果你需要額外的這個查詢也可以變得更加複雜信息爲您的設置。