2010-03-18 98 views
7

有沒有一種簡單的方法來查詢表的約束(foreignkeys specificaly) 像show create table一樣,但僅限於約束?Mysql顯示創建約束?

感謝,

pvgoddijn

回答

10

,只顯示外鍵約束,你可以通過加入

SELECT b.table_name, b.column_name, b.constraint_name, 
     b.referenced_table_name, b.referenced_column_name 
FROM information_schema.table_constraints a 
JOIN information_schema.key_column_usage b 
ON a.table_schema = b.table_schema AND a.constraint_name = b.constraint_name 
WHERE a.table_schema=database() AND a.constraint_type='FOREIGN KEY' 
ORDER BY b.table_name, b.constraint_name; 
+0

感謝這正是我一直在尋找的。 – pvgoddijn 2010-03-18 16:23:08

+0

+1 NICE QUERY。 FTW ... – KeatsKelleher 2012-05-09 19:09:59

-3
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name'; 

外鍵約束在輸出的註釋列中列出。

+0

此檢查information_schema.table_constraints的constraint_type並得到受影響的列information_schema.key_column_usage不適用於所有表類型。 – 2011-09-15 18:31:18

1
select * from 
information_schema.KEY_COLUMN_USAGE 
where table_schema = <db_name> 
and table_name = <table_name>;