2012-01-13 59 views
0

我想創建查詢導致這樣的完整信息:獲取有關約束

column_name, constraint_name, constraint_type, referenced_table_name, referenced_column_name 

我有嘗試這樣的事情

SELECT col.column_name, cons.constraint_name, cons.constraint_type,col.referenced_table_name, col.referenced_column_name 
FROM information_schema.table_constraints cons, information_schema.key_column_usage col 
WHERE col.table_name = 'countries' 
AND cons.constraint_name = col.constraint_name 
AND cons.table_name = col.table_name 

但是,我拿錯列名... :(

請幫我...

回答

0
SELECT `COLUMN_NAME`, `CONSTRAINT_NAME`, `REFERENCED_TABLE_NAME`, `REFERENCED_COLUMN_NAME` 
FROM `information_schema`.`KEY_COLUMN_USAGE` 
WHERE `TABLE_NAME` = 'countries' 
AND `CONSTRAINT_NAME` <> 'PRIMARY'; 

我不知道constraint_type。我還沒有在information_schema中找到此專欄。

+0

constraint_type就像是(主鍵,外鍵,唯一的等) – Flashidkz 2012-01-13 16:16:44

0

主鍵總是有名字「主要」,外鍵總是有referenced_table_name,這樣你就可以從一個表獲取信息 - key_column_usage

SELECT 
    column_name, 
    constraint_name, 
    CASE 
    WHEN constraint_name = 'PRIMARY' THEN 'PRIMARY KEY' 
    WHEN referenced_table_name IS NULL THEN 'UNIQUE KEY' 
    ELSE 'FOREIGN KEY' 
    END constraint_type, 
    referenced_table_name, 
    referenced_column_name 
FROM 
    information_schema.key_column_usage;