2012-07-31 29 views
0

請列出所有/一個從給定表引用的表的可能查詢?通過外鍵從**給定表中引用的表**

其實我可以列出引用給定的表與我在搜索中發現的以下查詢。

use INFORMATION_SCHEMA; 

select TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, 
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where 
REFERENCED_TABLE_NAME = '<table>'; 

但我需要的是這樣的反面。這是一個列表,從引用表表。

會很高興有一個解決方案..在此先感謝。

回答

0

您可以使用:

SELECT TABLE_NAME 
    FROM information_schema.KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_NAME = 'yourtable'; 

要檢查哪些錶鏈接到 'yourtable'。

您可以使用:

SELECT REFERENCED_TABLE_NAME 
    FROM information_schema.KEY_COLUMN_USAGE 
WHERE TABLE_NAME = 'yourtable'; 

到搜索周圍的其他方式。請確保在創建表語句中使用正確的外鍵聲明,以便正確填寫此表!

mysql> describe KEY_COLUMN_USAGE; 
+-------------------------------+--------------+------+-----+---------+-------+ 
| Field       | Type   | Null | Key | Default | Extra | 
+-------------------------------+--------------+------+-----+---------+-------+ 
| CONSTRAINT_CATALOG   | varchar(512) | NO |  |   |  | 
| CONSTRAINT_SCHEMA    | varchar(64) | NO |  |   |  | 
| CONSTRAINT_NAME    | varchar(64) | NO |  |   |  | 
| TABLE_CATALOG     | varchar(512) | NO |  |   |  | 
| TABLE_SCHEMA     | varchar(64) | NO |  |   |  | 
| TABLE_NAME     | varchar(64) | NO |  |   |  | 
| COLUMN_NAME     | varchar(64) | NO |  |   |  | 
| ORDINAL_POSITION    | bigint(10) | NO |  | 0  |  | 
| POSITION_IN_UNIQUE_CONSTRAINT | bigint(10) | YES |  | NULL |  | 
| REFERENCED_TABLE_SCHEMA  | varchar(64) | YES |  | NULL |  | 
| REFERENCED_TABLE_NAME   | varchar(64) | YES |  | NULL |  | 
| REFERENCED_COLUMN_NAME  | varchar(64) | YES |  | NULL |  | 
+-------------------------------+--------------+------+-----+---------+-------+ 
+0

是的..謝謝一堆!感謝張貼KEY_COLUMN_USAGE太..我應該看過它之前:) Btw ..我得到一些完美的行確定,但有些行打印NULL。可能是什麼原因?我試過, SELECT REFERENCED_TABLE_NAME,CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_NAME ='yourtable'; 對於REFERENCED_TABLE_NAME = null行,CONSTRAINT_NAME對於某些行是PRIMARY ..但對於某些行來說,即使REFERENCED_TABLE_NAME = null,它們也會提供特定於模式的約束名稱。 我有點困惑與空值。任何線索爲什麼發生這種情況? – nadh 2012-07-31 12:41:19