2012-10-04 90 views
0

我創建了一個腳本來顯示特定表中的外鍵。獲取表中的外鍵

SELECT i.CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS i 
LEFT JOIN information_schema.KEY_COLUMN_USAGE k ON 
i.CONSTRAINT_NAME = k.CONSTRAINT_NAME WHERE i.CONSTRAINT_TYPE = 'FOREIGN KEY' 
AND i.TABLE_NAME = 'sample'; 

當我在我的主機執行該命令,它會顯示在所有的數據庫發現table"sample"外鍵約束列表。

但我需要特定的數據庫,樣本表foreign keys

+0

請任何一個解決我的問題 –

+0

我查詢:SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = '的外鍵' 和TABLE_SCHEMA = '數據庫' 和TABLE_NAME = '表名'; –

+0

感謝您的所有更新 –

回答

1

只是在結尾處加上

AND i.table_schema = '<the name of your database which is a schema>' 

編輯:

更改左連接到

LEFT JOIN information_schema.KEY_COLUMN_USAGE 
    ON i.CONSTRAINT_NAME = k.CONSTRAINT_NAME AND 
     i.TABLE_SCHEMA = k.TABLE_SCHEMA 

,因爲你會發現在不同的模式相同的名稱約束。

what's a schema and a database in mysql

+0

我有3個數據庫。所有人都有樣品表。我在這樣的查詢中添加了這個約束:SELECT i.TABLE_NAME,i.CONSTRAINT_TYPE,i.CONSTRAINT_NAME,k.REFERENCED_TABLE_NAME,k.REFERENCED_COLUMN_NAME FROM information_schema.TABLE_CONSTRAINTS i LEFT JOIN information_schema.KEY_COLUMN_USAGE k ON i.CONSTRAINT_NAME = k。 CONSTRAINT_NAME WHERE i.CONSTRAINT_TYPE ='FOREIGN KEY' AND i.TABLE_SCHEMA ='database1' AND i.TABLE_NAME ='sample'; –

+0

帶3個鍵的單樣品臺。上述查詢的結果是9個外鍵。這就是它顯示了3個數據庫中的所有密鑰 –

+0

@StefanEdwards好的,你可以嘗試編輯嗎? –

0

之前需要選擇數據庫運行此查詢。以下可能會有所幫助。

USE YourDatabaseName 

SELECT i.CONSTRAINT_NAME 
FROM information_schema.TABLE_CONSTRAINTS i 
LEFT JOIN information_schema.KEY_COLUMN_USAGE k 
ON i.CONSTRAINT_NAME = k.CONSTRAINT_NAME 
WHERE i.CONSTRAINT_TYPE = 'FOREIGN KEY' 
AND i.TABLE_NAME = 'sample'