2012-01-13 55 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;