2012-01-13 48 views
0

制約に関する完全な情報を得る:...私は間違った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 

のようなものを試してみる

column_name, constraint_name, constraint_type, referenced_table_name, referenced_column_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は(PRIMARY KEY、FOREIGN KEY、UNIQUE、などのようなものです) – Flashidkz

0

主キーは常に 'PRIMARY' の名前を持っているあなたは1つのテーブルからその情報を得ることができるので、外部キーは常に、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; 
関連する問題